Ios 核心数据阵列

Ios 核心数据阵列,ios,arrays,uitableview,core-data,nsfetchrequest,Ios,Arrays,Uitableview,Core Data,Nsfetchrequest,我正在使用下面的代码获取数组中的对象。在我的程序中,我在tableview中显示了一个数组,当点击一个单元格时,它将引导到tableview中显示的另一个数组。用户可以在这两个表视图中添加单元格。发生的情况是,当我在第二个tableview中创建新行时,返回并点击使我到达的同一单元格,我注意到我创建的对象不在那里(它们被重新分配到另一个单元格)。我认为问题在于这样一行:routines=results。我认为正在发生的事情是,当我在第二个视图中回击时,会再次调用行routines=results

我正在使用下面的代码获取数组中的对象。在我的程序中,我在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)")
    }
}

我同意乔纳森的评论。你只是在为自己工作,抓住数组中的所有东西。使用专为与Core Data和UITableView控制器一起使用而设计的工具,您将有一个更容易(更易于维护)的时间。

我强烈建议在从Core Data获取NSManagedObjects时使用NSFetchedResultsController。除此之外,您还可以为NSFetchRequest分配一个NSSortDescriptor,以便根据某个键对NSManagedObject进行排序。