การตั้งค่าคุณสมบัติในวัตถุ CoreData ส่งผลให้เกิดข้อผิดพลาดในการบันทึก

เมื่อฉันอัพเดต NSManagedObject และบันทึก ฉันได้รับข้อผิดพลาด: ไม่สามารถดำเนินการให้เสร็จสิ้นได้ (ข้อผิดพลาดโกโก้ 1560)

  • วัตถุอยู่ในฐานข้อมูลแล้ว ดังนั้นอันที่จริงฉันกำลังอัปเดตเมื่อทำการบันทึก
  • เมื่อฉันบันทึกวัตถุก่อนที่จะแก้ไขไม่มีข้อผิดพลาด
  • ฉันแก้ไขมันโดยการตั้งค่าคุณสมบัติของวัตถุ การใช้ KVP ก็มีผลลัพธ์เช่นเดียวกัน
  • บันทึกดั้งเดิม (วัตถุถูกสร้างขึ้นไม่นานก่อนหน้านี้) และบันทึกหลังจากการอัพเดตเสร็จสิ้นทั้งหมดในเธรดหลัก วัตถุจะไม่ถูกสัมผัสจากเธรดอื่น

วิธีการ validateForUpdate: ส่งคืน NO เสมอ ฉันไม่แน่ใจว่าวิธีนี้ควรส่งคืน YES แม้ว่าวัตถุจะไม่มีการเปลี่ยนแปลงหรือไม่: หากวัตถุ X ถูกบันทึกโดยไม่มีข้อผิดพลาด จากนั้นฉันจะเรียก validateForUpdate: มันจะส่งคืน NO

มีความคิดอะไรบ้าง?


person Clemens    schedule 05.01.2013    source แหล่งที่มา
comment
ดูโพสต์นี้: stackoverflow.com/questions/1283960/   -  person LombaX    schedule 05.01.2013
comment
ขอบคุณ! การทำซ้ำในรายละเอียดข้อผิดพลาดช่วยฉันได้! แอตทริบิวต์ความสัมพันธ์ว่างเปล่าแต่จำเป็น ฉันยังไม่เข้าใจว่าทำไมการบันทึก X ตั้งแต่แรกจึงไม่มีข้อผิดพลาด ดูเหมือนว่าการกรอกแอตทริบิวต์บังคับนี้จะไม่ถูกสังเกตเห็นโดย CoreData จนกว่าจะมีการอัปเดตครั้งแรกในภายหลัง ฉันเดาว่านี่เกี่ยวข้องกับการแคช อย่างไรก็ตาม ฉันสามารถแก้ไขปัญหาของฉันได้แล้ว   -  person Clemens    schedule 05.01.2013


คำตอบ (1)


คุณสมบัติที่คุณเปลี่ยนแปลงมีข้อจำกัดเกี่ยวกับมูลค่าที่อาจเป็นได้ การอัปเดตของคุณละเมิดสิ่งเหล่านี้ ทำให้คุณไม่ต้องทำการเปลี่ยนแปลงที่ไม่ถูกต้องอีกต่อไป

person Eimantas    schedule 05.01.2013
comment
ดู stackoverflow.com/questions/ 1283960/ และการวนซ้ำใน detailErros จะแสดงว่าปัญหาที่แท้จริงคืออะไร ไม่ใช่แอตทริบิวต์ที่อัปเดตเอง - person Clemens; 05.01.2013