Простейшее обходное решение, использующее None
>>> def bar(b, data=None):
... data = data or []
... data.append(b)
... return data
...
>>> bar(3)
[3]
>>> bar(3)
[3]
>>> bar(3)
[3]
>>> bar(3, [34])
[34, 3]
>>> bar(3, [34])
[34, 3]
Это ожидаемое поведение, данные ядра не возвратят полные объекты, пока вам не понадобится доступ к постоянным значениям объектов. Каждый из ваших возвращенных объектов будет «ошибкой» до этой точки.
Вы можете заставить запрос на выборку возвращать полные объекты с помощью [request setReturnsObjectsAsFaults:NO]
, но в большинстве случаев у вас будет хорошо. Посмотрите документацию для NSFetchRequest для получения дополнительной информации.
Если вы получаете доступ к одному из свойств, основные данные перейдут в постоянное хранилище и извлекут остальную часть ваших значений, тогда вы получите полное описание в журналах.
Это кажется таким распространенным недоразумением, что я решил написать об этом, здесь .
Я столкнулся с такой же проблемой при извлечении данных из CoreData! Итак, я последовал за тем, как @jrturton инструктировал и реализовал его в Swift 3:
Шаг 1: Добавить
import CoreData
Шаг 2: Добавьте код ниже. .
blockquote>let context = ( UIApplication.shared.delegate as! AppDelegate ).persistentContainer.viewContext var request = NSFetchRequest<NSFetchRequestResult>() request = Your_Entity_Name.fetchRequest() request.returnsObjectsAsFaults = false do { let arrayOfData = try context.fetch(request) } catch { // Handle the error! }
Надеюсь, это поможет вам. :)