【发布时间】: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