2016-09-17 2 views
3

Wie kann ich meine NSFetchedResultsController zu swift 3.0 konvertieren, ich kann es nicht zum Arbeiten .... Ich versuchte Apples automatische Konvertierung, aber es funktioniert nicht ??konvertieren Syntax zu swift 3.0 NSFetchedResultsController

ich dies hatte:

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

automatisch auf diese umgerechnet:

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

aber es funktioniert nicht, es mich zu fragen, Semikolon in zufälligen Stellen zu setzen

Antwort

2

Es ist notwendig, um Einrichtung NSFetchRequestResult in Klammern <>.

Für 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 
}()