CoreDataに異常な問題があります。私が最初にデータをロードすると、すべて正常に動作しているように見えますが、データを保存した後は、その後のフェッチ要求がすべて停止します(または空の状態に戻ります)。コアデータを保存するとフェッチ要求が中断されます
私は、udacityによってプロジェクトの例であるthisプロジェクトからCoreDataStackをコピーしました。保存補助機能が含まれています。
func save() {
context.performAndWait() {
if self.context.hasChanges {
do {
try self.context.save()
} catch {
fatalError("Error while saving main context: \(error)")
}
// now we save in the background
self.persistingContext.perform() {
do {
try self.persistingContext.save()
} catch {
fatalError("Error while saving persisting context: \(error)")
}
}
}
}
}
私のビューコントローラでは、以下のようなコードを使用して異なる述語に対して通常のフェッチ要求を実行できます。
fetchedResultsController?.fetchRequest.predicate = NSPredicate(format: "fromDatetime >= %@ AND fromDatetime < %@", argumentArray: [selectionTime, selectionTime + 3600_000])
fetchedResultsController?.managedObjectContext.refreshAllObjects()
let m = fetchedResultsController?.fetchedObjects as! [Measurement]
print("number of elements in m: \(m.count)")
テストボタンを使用してデータを保存した後。
@IBAction func testAction(_ sender: Any) {
// test action
print("test clicked")
let delegate = UIApplication.shared.delegate as! AppDelegate
let stack = delegate.stack
stack.save()
}
以降のフェッチ要求はすべて空です。また、デバイスに保存されているすべてのデータを含むUITableViewController
を実装する別のViewControllerを作成しました。私がそれを開くと、保存した後もデータはそこに正しく表示されます。 このような動作を引き起こす原因は何ですか?