ios - 解析: fatal error: NSArray element failed to match the Swift Array Element type

标签 ios swift parse-platform

每当我从 Collection View 中删除项目、关闭应用程序、重新启动应用程序,然后返回到项目时,我都会收到此错误( fatal error :NSArray 元素无法匹配 Swift Array 元素类型)。我发现了类似的解决方案,可以重新排序初始化程序,但这似乎对我不起作用。

**AppDelegate.swift**

func application(application: UIApplication, didFinishLaunchingWithOptions   launchOptions: [NSObject: AnyObject]?) -> Bool {

// register PFObject subclasses
Task.registerSubclass()
Task.initialize()

Project.registerSubclass()
Project.initialize()

User.registerSubclass()
User.initialize()


**Project.swift**

import UIKit
import Parse

public class Project: PFObject, PFSubclassing
{

  // MARK: - Public API
  @NSManaged public var projectTitle: String!
  @NSManaged public var owner: User!
  @NSManaged public var tasks: [Task]

  // MARK - Required PFSubclassing Parse setup
  override public class func initialize()
  {
    struct Static {
      static var onceToken: dispatch_once_t = 0
    }
    dispatch_once(&Static.onceToken) {
      Task.initialize()
      self.registerSubclass()
    }
  }

  public static func parseClassName() -> String {
    return "Project"
  }


  // MARK: Conveinience Init

  init(projectTitle: String, owner: User, tasks: [Task])
  {
    super.init()
    self.projectTitle = projectTitle
    self.owner = owner
    self.tasks = tasks
  }

  override init() { super.init() }

}


**Task.swift**
import UIKit
import Parse

public class Task: PFObject, PFSubclassing
{

  // MARK: - Public API
  @NSManaged public var title: String
  @NSManaged public var isChecked: Bool
  @NSManaged public var projectOwner: Project
  @NSManaged public var category: String
  @NSManaged public var isImportant: Bool

  // MARK - Required PFSubclassing Parse setup
  override public class func initialize()
  {
    struct Static {
      static var onceToken: dispatch_once_t = 0
    }
    dispatch_once(&Static.onceToken) {
      self.registerSubclass()
    }
  }

  public static func parseClassName() -> String {
    return "Task"
  }


  // MARK: Conveinience Init

  // Create new project
  init(title: String, projectOwner: Project, isChecked: Bool, category: String, isImportant: Bool)
  {
    super.init()
    self.title = title
    self.projectOwner = projectOwner
    self.isChecked = isChecked
    self.category = category
    self.isImportant = isImportant
  }

  override init() { super.init() }




}

当我尝试使用 tasks 数组时,会特别发生该错误。我将其加载到 UICollectionView 中。

这里可能是我从 Parse 获取任务的相关代码:

// Fetch data from Parse
  func fetchProject() {
    let isCurrentTab = navigationController?.tabBarItem.title
    let tasksQuery = PFQuery(className: Task.parseClassName())
    tasksQuery.whereKey("category", equalTo: isCurrentTab!)
    tasksQuery.whereKey("projectOwner", equalTo: project)
    tasksQuery.findObjectsInBackgroundWithBlock { (tasks, error) -> Void in
      if error == nil {
        self.project.tasks.removeAll()
        print(tasks)

          for task in tasks! {
            print(task)
            let task = task as! Task
            self.project.tasks.append(task)
          }

        self.collectionView?.reloadData()
      } else {
        print("\(error?.localizedDescription)")
      }
    }
  }

我使用的是 Xcode 7.1 和 Parse v1.8.5

任何帮助将不胜感激!

最佳答案

我最终使用指针来访问我的任务数组,而不是将其嵌套在项目数组中。这样,我可以直接对该数组进行所有调用,而不会因为尝试进入嵌套级别而丢失任何内容。

关于ios - 解析: fatal error: NSArray element failed to match the Swift Array Element type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32871057/

相关文章:

ios - 为什么将 subLocality 与反向GeocodeLocation 结合使用时,当前的 subLocality 并不总是弹出

swift - 无法操作位于不同 ViewController 上的 AVAudioPlayer

xcode - 将 PFGeoPoint 转换为字符串错误

javascript - Javascript 的打开语法是什么?

iphone - iOS - 在导航更改时停止视频

ios - 原因 : '-[JSQMessagesCollectionViewFlowLayoutInvalidationContext invalidateFlowLayoutMessagesCache]: unrecognized selector sent to instance

ios - "Presenting a controller modally within a nav controller within a tab bar controller"的问题

ios - 如何在objective-c中使用Parse API使用 'AND' 'OR'操作

ios - ionic 构建 ios 成功,但 ionic 构建 ios --release 失败

ios - 使用 Storyboard ,如何向我的 TableViewController 添加填充?