При использовании Core Data и печати всех данных, ошибка отображается в консоли [duplicate]

Простейшее обходное решение, использующее 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]
96
задан Chris 5 September 2011 в 06:46
поделиться

2 ответа

Это ожидаемое поведение, данные ядра не возвратят полные объекты, пока вам не понадобится доступ к постоянным значениям объектов. Каждый из ваших возвращенных объектов будет «ошибкой» до этой точки.

Вы можете заставить запрос на выборку возвращать полные объекты с помощью [request setReturnsObjectsAsFaults:NO], но в большинстве случаев у вас будет хорошо. Посмотрите документацию для NSFetchRequest для получения дополнительной информации.

Если вы получаете доступ к одному из свойств, основные данные перейдут в постоянное хранилище и извлекут остальную часть ваших значений, тогда вы получите полное описание в журналах.

Это кажется таким распространенным недоразумением, что я решил написать об этом, здесь .

254
ответ дан jrturton 21 August 2018 в 12:38
поделиться
  • 1
    вы можете отключить свойство, вызвав [request setReturnsObjectsAsFaults: NO]; – Qamar Suleiman 20 February 2012 в 18:22
  • 2
    Ошибки сбивают с толку, они могли бы сказать «данные не получены» или что-то – Cristi Băluță 12 October 2015 в 14:09
  • 3
    Ошибка - это ключевое слово, используемое в архитектуре компьютерных наук – Abhishek Bedi 13 June 2017 в 14:49

Я столкнулся с такой же проблемой при извлечении данных из CoreData! Итак, я последовал за тем, как @jrturton инструктировал и реализовал его в Swift 3:

Шаг 1: Добавить import CoreData

Шаг 2: Добавьте код ниже. .

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! 
}

Надеюсь, это поможет вам. :)

2
ответ дан Remy Lebeau 21 August 2018 в 12:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: