核心数据数组
Posted
技术标签:
【中文标题】核心数据数组【英文标题】:Core Data array 【发布时间】:2015-04-26 21:18:21 【问题描述】:我正在使用下面的代码来获取数组中的对象。在我的程序中,我在 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。除此之外,您可以为 NSFetchRequest 分配一个 NSSortDescriptor 以根据某个键对您的 NSManagedObjects 进行排序。 【参考方案1】:我同意乔纳森的评论。您只是在为自己坚持阵列中的所有内容而工作。使用专为 Core Data 和 UITableView 控制器设计的工具,您将拥有更轻松(且更易于维护)的时间。
【讨论】:
以上是关于核心数据数组的主要内容,如果未能解决你的问题,请参考以下文章