2015-04-26 52 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控制器一起工作的工具,您将拥有更容易(且更易于维护)的时间。