【问题标题】:Core Data array核心数据数组
【发布时间】:2015-04-26 21:18:21
【问题描述】:

我正在使用下面的代码来获取数组中的对象。在我的程序中,我在 tableview 中显示了一个数组,当点击一个单元格时,它会导致另一个数组显示在 tableview 中。用户可以在这两个表视图中添加单元格。发生的情况是,当我在第二个表格视图中创建新行时,返回并点击让我到达那里的同一个单元格,我注意到我创建的对象不存在(它们被重新分配给另一个单元格)。我相信问题在于:routines = results。我认为正在发生的事情是,当我在第二个视图中点击返回时,再次调用 routines = results 行,并且因为 results 本质上是无序的,它会打乱我之前建立的 routines 数组的顺序。

var routines = [NSManagedObject]()

override func viewWillAppear(animated: Bool) {

    self.navigationItem.leftBarButtonItem = self.editButtonItem()

    let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let managedContext = appDelegate.managedObjectContext!

    let fetchRequest = NSFetchRequest(entityName: "Routine")

    var error: NSError?

    let fetchedResults = managedContext.executeFetchRequest(fetchRequest, error: &error) as! [NSManagedObject]?

    if let results = fetchedResults {
        routines = results
    } else {
        println("Could not fetch \(error), \(error!.userInfo)")
    }
}

【问题讨论】:

  • 我强烈建议在从 CoreData 获取 NSManagedObjects 时使用 NSFetchedResultsController。除此之外,您可以为 NSFetchRequest 分配一个 NSSortDescriptor 以根据某个键对您的 NSManagedObjects 进行排序。

标签: ios arrays uitableview core-data nsfetchrequest


【解决方案1】:

我同意乔纳森的评论。您只是在为自己坚持阵列中的所有内容而工作。使用专为 Core Data 和 UITableView 控制器设计的工具,您将拥有更轻松(且更易于维护)的时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    相关资源
    最近更新 更多