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!