Core data 还有更多的“吗?”;Swift"-创建NSFetchedResultsController的模式?

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

在iOS项目的标准核心数据模板中,创建一个
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
中用一个立即命名的匿名闭包初始化的惰性存储属性看起来更干净。(哎哟,我有没有收到所有的快艇?)