Swift 3: невозможно вывести сложный тип закрытия с помощью NSFetchedResultsController
после обновления моего проекта до 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"
1 ответов
после некоторого чтения я узнал, что 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!