将语法转换为swift 3.0 NSFetchedResultsController

时间:2016-09-17 03:32:05

标签: ios swift core-data nsfetchedresultscontroller

如何将我的NSFetchedResultsController转换为swift 3.0,我无法让它工作....我尝试过苹果的自动转换,但它没有工作?

我有这个:

lazy var fetchedResultsControler: NSFetchedResultsController = {
    let fetchRequest = NSFetchRequest(entityName: "Mesages")
    fetchRequest.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: true)]
    fetchRequest.predicate = NSPredicate(format: "user.id = %@", self.friend!.id!)
    let moc = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
    let frc = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: moc, sectionNameKeyPath: nil, cacheName: nil)
    frc.delegate = self
    return frc
}()

自动转换为:

    lazy var fetchedResultsControler: NSFetchedResultsController = { () -> <<error type>> in
    let fetchRequest = NSFetchRequest(entityName: "Mesages")
    fetchRequest.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: true)]
    fetchRequest.predicate = NSPredicate(format: "user.id = %@", self.friend!.id!)
    let moc = (UIApplication.shared.delegate as! AppDelegate).managedObjectContext
    let frc = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: moc, sectionNameKeyPath: nil, cacheName: nil)
    frc.delegate = self
    return frc
}()

但它没有用,它要我把半冒号放在随机的地方

1 个答案:

答案 0 :(得分:2)

需要在括号内设置NSFetchRequestResult&lt;&gt;。

对于swift 3.0:

lazy var fetchedResultsControler: NSFetchedResultsController<NSFetchRequestResult> = {
    let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Mesages")
    fetchRequest.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: true)]
    fetchRequest.predicate = NSPredicate(format: "user.id = %@", self.friend!.id!)
    let moc = (UIApplication.shared.delegate as! AppDelegate).managedObjectContext
    let frc = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: moc, sectionNameKeyPath: nil, cacheName: nil)
    frc.delegate = self
    return frc
}()