2015-04-26 79 views
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)") 
    } 
} 
+0

我強烈建議從CoreData獲取NSManagedObjects時使用NSFetchedResultsController。除此之外,您可以將一個NSSortDescriptor分配給NSFetchRequest,以根據某個鍵對NSManagedObjects進行排序。 – Jonathan

回答

0

我同意來自Jonathan的評論。你只是爲了保持陣列中的所有東西而工作。使用專爲與Core Data和UITableView控制器一起工作的工具,您將擁有更容易(且更易於維護)的時間。