将项目升级到Swift 3后,将不再构建以下初始化程序:
1 var fetchedResultsController: NSFetchedResultsController {
2 if _fetchedResultsController != nil {
3 return _fetchedResultsController!
4 }
5
6 let fetchRequest: NSFetchRequest = MyEntity.fetchRequest()
...
错误发生在第1行:
"Unable to infer complex closure return type; add explicit type to disambiguate"
第6行给出了另一个错误:
"Generic parameter 'MyEntity' could not be inferred"
最佳答案
经过一番阅读后,我了解到NSFetchRequest
和NSFetchedResultsController
现在在iOS 10中是通用的,Apple建议明确指定其类型:
1 var fetchedResultsController: NSFetchedResultsController<MyEntity> {
2 if _fetchedResultsController != nil {
3 return _fetchedResultsController!
4 }
5
6 let fetchRequest: NSFetchRequest<MyEntity> = MyEntity.fetchRequest()
...
一个有用的技巧(针对Swift 3迁移中的此问题和其他问题)是使用XCode从模板简单地创建一个新应用程序!
关于migration - swift : Unable to infer complex closure type with NSFetchedResultsController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39238386/