もちろん、インターネット全体で検索しました。 しかし、この問題は解決できません。楽観的なロック失敗iOS swift
私は2つのエンティティを得ました: 投稿& PopularPost。 (互いにほぼ重複しています)
私が投稿を取得し、それがnumberoflikes、numberofcommentsのようなプロパティを更新すると良いです。 「PopularPosts」:
しかし、私はPopularPostをフェッチし、それがプロパティです更新しようと、それは 「楽観的ロックの失敗」フェッチと更新とエンティティを保存する
MYコードを言います。
let postpopFetch = NSFetchRequest<NSFetchRequestResult>(entityName: "PopularPosts")
postpopFetch.predicate = NSPredicate(format: "id = %@", postId)
let resultp = try? CoreDataManager.sharedInstance.managedObjectContext.fetch(postpopFetch)
let resultDatap = resultp as! [PopularPosts]
for object in resultDatap {
print(object.numberOfHearts)
if like {
object.numberOfHearts = object.numberOfHearts + 1
object.isLiked = true
}else{
(object.numberOfHearts > 0) ? (object.numberOfHearts = object.numberOfHearts - 1) : (object.numberOfHearts = 0)
object.isLiked = false
}
}
do {
try CoreDataManager.sharedInstance.managedObjectContext.save()
print("saved!")
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
コアデータスタックはどのように見えますか?いくつのコンテキストがありますか?親子関係がありますか? NSPersistent Containerを使用していますか? –
シングルトンクラスでは1つのコンテキストしか保持されません。 親子関係はありません。 単純な2つのエンティティのみ。 – user3804063
あなたは常にメインスレッドで読み書きしていますか? –