Из вашего кода:
let results = try context.execute(request)
for re in results as! [NSManagedObject] {
print(re.value(forKey: "tenKH"))
}
Используемый вами метод execute
возвращает экземпляр NSPersistentStoreResult
.Это абстрактный класс.NSAsynchronousFetchResult
, упомянутый в вашем сообщении об ошибке, является конкретным подклассом NSPersistentStoreResult
.
Далее, вы пытаетесь привести его к [NSManagedObject]
, который является другим, не связанным классом.Ошибка, которую вы видите, происходит потому, что невозможно типизировать NSAsynchronousFetchResult
к массиву, потому что они не связаны или даже не похожи друг на друга.
Похоже, вы намеревались использовать fetch(request)
вместо execute(request)
, потому что fetch
возвращает массив управляемых объектов.
Что я действительно хотел бы знать, так это то, как исследовать это самостоятельно.
Я бы не стал это упоминать, но поскольку вы конкретно спросили: это то, что вы бы решили, просмотрев документацию Apple по классам и методам, которые вы используете.Документирован метод execute
, возвращающий что-то отличное от того, что ожидает ваш код, а сообщение об ошибке дает большую подсказку о природе проблемы.