2016-09-17 87 views
3

如何將我的NSFetchedResultsController轉換爲swift 3.0,我無法讓它工作....我試過蘋果的自動轉換,但它不工作?將語法轉換爲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> <>。

對於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 
}() 
相關問題