2016-09-17 3 views
3

как я могу преобразовать свой NSFetchedResultsController в swift 3.0, я не могу заставить его работать ... Я пробовал автоматическое преобразование Apple, но оно не работает?преобразовать синтаксис в swift 3.0 NSFetchedResultsController

Я это:

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 
}() 

, но он не работает, он просит меня поставить полу двоеточие в случайных местах

ответ

2

Это необходимо для установленный NSFetchRequestResult внутри кронштейны <>.

Для быстрой 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 
}()