Ios 无法将我的fetchedresultscontroller变量转换为swift 3

Ios 无法将我的fetchedresultscontroller变量转换为swift 3,ios,swift,swift3,Ios,Swift,Swift3,我想把它转换成swift 3 lazy var fetchedResultsControler: NSFetchedResultsController = { let fetchRequest = NSFetchRequest(entityName: "Mesages") fetchRequest.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: true)] fetchRequest.pr

我想把它转换成swift 3

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.shared.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
}()
lazy var fetchedResultsController:NSFetchedResultsController={()->in
let fetchRequest=NSFetchRequest(entityName:“Mesages”)
fetchRequest.sortDescriptors=[NSSortDescriptor(键:“timestamp”,升序:true)]
fetchRequest.predicate=NSPredicate(格式:“user.id=%@”,self.friend!.id!)
让moc=(UIApplication.shared.delegate为!AppDelegate).managedObjectContext
设frc=NSFetchedResultsController(fetchRequest:fetchRequest,managedObjectContext:moc,sectionNameKeyPath:nil,cacheName:nil)
frc.delegate=self
返回frc
}()

在随机位置放置分号会产生错误,您如何在swift 3中声明类似的内容?您需要指定
ResultType

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
}()
惰性变量fetchedResultsController:NSFetchedResultsController={
let fetchRequest=NSFetchRequest(entityName:“Mesages”)
fetchRequest.sortDescriptors=[NSSortDescriptor(键:“timestamp”,升序:true)]
fetchRequest.predicate=NSPredicate(格式:“user.id=%@”,self.friend!.id!)
让moc=(UIApplication.shared.delegate为!AppDelegate).managedObjectContext
设frc=NSFetchedResultsController(fetchRequest:fetchRequest,managedObjectContext:moc,sectionNameKeyPath:nil,cacheName:nil)
frc.delegate=self
返回frc
}()

尽管您需要在谓词中永久性地展开它,但为什么要将
友元
及其
id
声明为可选?