Core data 还有更多的“吗?”;Swift"-创建NSFetchedResultsController的模式?
在iOS项目的标准核心数据模板中,创建一个Core data 还有更多的“吗?”;Swift"-创建NSFetchedResultsController的模式?,core-data,swift,nsfetchedresultscontroller,Core Data,Swift,Nsfetchedresultscontroller,在iOS项目的标准核心数据模板中,创建一个NSFetchedResultsController似乎非常像Objective-C被硬塞进了Swift var fetchedResultsController: NSFetchedResultsController { if _fetchedResultsController != nil { return _fetchedResultsController! } let fetchRequest = NSF
NSFetchedResultsController
似乎非常像Objective-C被硬塞进了Swift
var fetchedResultsController: NSFetchedResultsController {
if _fetchedResultsController != nil {
return _fetchedResultsController!
}
let fetchRequest = NSFetchRequest()
// Edit the entity name as appropriate.
let entity = NSEntityDescription.entityForName("Event", inManagedObjectContext: self.managedObjectContext!)
fetchRequest.entity = entity
// Set the batch size to a suitable number.
fetchRequest.fetchBatchSize = 20
// Edit the sort key as appropriate.
let sortDescriptor = NSSortDescriptor(key: "timeStamp", ascending: false)
let sortDescriptors = [sortDescriptor]
fetchRequest.sortDescriptors = [sortDescriptor]
// Edit the section name key path and cache name if appropriate.
// nil for section name key path means "no sections".
let aFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: self.managedObjectContext!, sectionNameKeyPath: nil, cacheName: "Master")
aFetchedResultsController.delegate = self
_fetchedResultsController = aFetchedResultsController
var error: NSError? = nil
if !_fetchedResultsController!.performFetch(&error) {
// Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
//println("Unresolved error \(error), \(error.userInfo)")
abort()
}
return _fetchedResultsController!
}
var _fetchedResultsController: NSFetchedResultsController? = nil
作为一个对斯威夫特还是很陌生的人,我该如何把它翻译成更接近斯威夫特风格的东西呢?惰性变量?用闭包初始化它?还有什么吗?我不知道,这很快-
fetchedResultsController
是一个计算属性,它初始化并返回可选存储属性的未包装值。。。但是,在AppDelegate
中用一个立即命名的匿名闭包初始化的惰性存储属性看起来更干净。(哎哟,我有没有收到所有的快艇?)