0
コアデータレコードを更新したい。まず、そのレコードが存在するかどうかを調べました。存在する場合は、新しいレコードが作成されない場合は更新する必要があります。
最後に、Postインスタンスを返す必要があります。
私はそれをsetValueで更新する方法と、ポストインスタンスを返す方法を知らない。このコード行でポストインスタンスを初期化したため、Swiftによるコアデータオブジェクトの更新
post = NSEntityDescription.insertNewObjectForEntityForName()
私は更新のためにこれを行う方法がわかりません。
class Post: NSManagedObject {
}
var post: Post!
private static func postFromJSONObject(json: [String:AnyObject], inContext context: NSManagedObjectContext) -> Post? {
.
.
.
let coreDataStack = CoreDataStack(modelName: "ProjectPart1")
let mainQueueContext = coreDataStack.mainQueueContext
let fetchRequest = NSFetchRequest(entityName: "Post")
fetchRequest.predicate = NSPredicate(format: "id = %@", "\(postID)")
do {
let foundRecordsArray = try! mainQueueContext.executeFetchRequest(fetchRequest) as! [Post]
if foundRecordsArray.count > 0 {
//here is where I should update Core Data!
} else{
context.performBlockAndWait() {
post = NSEntityDescription.insertNewObjectForEntityForName("Post", inManagedObjectContext: context) as! Post
post.title = postTitle
post.body = postBody
post.id = postID
post.userId = postUserID
}
}
} catch {
print("error")
}
return post
}
私はこの1つを試してみましたが、それはどちらか動作しませんでした。
if foundRecordsArray.count > 0 {
var res = foundRecordsArray[0] as NSManagedObject
res.setValue(postID, forKey: "id")
res.setValue(postUserID, forKey: "userId")
res.setValue(postTitle, forKey: "title")
res.setValue(postBody, forKey: "body")
post = res as! Post
}
エラー:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ProjectPart1.Post title]: unrecognized selector sent to instance 0x7f8e5180e0b0'
感謝。私はそれがうまくいかないことを試みました。エラー: 'NSInvalidArgumentException'、理由: ' - [ProjectPart1.Post title]:インスタンスに送られた認識できないセレクタ0x7f8c0f6e5330' –
@آژانسکتابそれは私と一緒に働いた。私は答えを編集しましたが、それも試してみてください – Anuraj
ありがとうが、それは動作しませんでした。同じエラーで –