【发布时间】:2015-01-01 23:13:03
【问题描述】:
我已经设法按字母顺序对从核心数据接收到的数据进行排序,现在我想将用户名放在每个字母的部分中。我知道最简单的方法是使用 NSFetchedResultsController,但我不知道如何使用它(很少有关于 Swift 的教程)。
所以我的代码如下所示:
override func viewDidAppear(animated: Bool) {
let appDel:AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let context:NSManagedObjectContext = appDel.managedObjectContext!
let freq = NSFetchRequest(entityName: "Message")
let en = NSEntityDescription.entityForName("Message", inManagedObjectContext: context)
let fetchRequest = NSFetchRequest(entityName: "Message")
let sortDescriptor = NSSortDescriptor(key: "username", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
myList = context.executeFetchRequest(fetchRequest, error: nil) as [Model]
tv.reloadData()
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return myList.count
}
我希望有人能对 NSFetchedResultsController 有所了解并帮助我继续前进。
如果我没有完全错,初始化看起来像这样,虽然我无法弄清楚“缓存名称”:
let resultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: myList, sectionNameKeyPath: "username", cacheName: <#String?#>)
任何关于如何进行的建议将不胜感激。
【问题讨论】:
-
您是否阅读过描述
cacheName参数的NSFetchedResultsController class documentation?其中哪一部分没有意义? -
@TomHarrington 这实际上根本不是一个简单的答案。它涉及瞬态核心数据、NSManagedObject 子类化,然后最终使用 NSFetchedResultsController ......并且不需要缓存。我正在考虑写一个答案,但它会很长......
-
什么是“瞬态”核心数据?
-
@TomHarrington 这是一种非标准的持久核心数据属性,用于在核心数据中创建临时和动态的“用户名初始”属性,以供 NSFetchedResultsController 使用。此 Apple 文档中提供的信息:developer.apple.com/library/mac/documentation/Cocoa/Conceptual/…
-
哦,瞬态属性
标签: ios xcode core-data swift nsfetchedresultscontroller