0
我正在使用下面的代码来获取数组中的对象。在我的程序中,我有一个数组显示在tableview中,当一个单元格被点击时,它会导致另一个数组显示在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。除此之外,您可以将一个NSSortDescriptor分配给NSFetchRequest,以根据某个键对NSManagedObjects进行排序。 – Jonathan