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