Когда мое приложение запускается и создается первый контроллер представления, также создается новый резервный объект NSManagedObject. На этом этапе я НЕ сохранил контекст (и начал со свежего, пустого постоянного хранилища).
Пользователь может перейти на другой экран, на котором будет отображаться сообщение, если сохраненных элементов нет, или, если сохраненные элементы существуют, отобразится список элементов. Вот как я проверяю сохраненные элементы:
func checkForSavedItems() -> Bool {
var itemsDoExist = false
let fetchRequest = NSFetchRequest<NSNumber>(entityName: "Items")
fetchRequest.includesPendingChanges = false
fetchRequest.resultType = .countResultType
do {
let countResult = try context.fetch(fetchRequest)
itemsDoExist = countResult.first!.intValue > 0
} catch let error {
print(error)
}
return itemsDoExist
}
Я ожидал, что fetchRequest.includesPendingChanges = false
гарантировал бы, что новый объект, который не был сохранен, не будет засчитан, но это так. Счетчик возвращается как 1, поэтому он должен подсчитывать элементы в NSManagedObjectContext
Это также предполагает, что запрос на выборку возвращает количество элементов в контексте, а не постоянное хранилище.
Как мне получить реальное количество товаров в постоянном магазине?
Спасибо
count(for: NSFetchRequest)
? - person pbasdf   schedule 17.12.2018