แอพขัดข้องโดยไม่มีร้านค้าถาวรหลังจากอัปเดต iOS7

ฉันมีแอปพลิเคชันที่ขัดข้องด้วย 'NSPersistentStoreCoordinator ไม่มีร้านค้าถาวร ไม่สามารถดำเนินการบันทึกได้' หลังจากที่ผู้ใช้อัปเกรดจาก iOS6 เป็น iOS7 การแก้ไขเพียงอย่างเดียวคือการลบแอปเนื่องจากร้านค้าถาวรเกิดความสับสน (ชัดแจ้ง)

ฉันไม่ต้องการให้ผู้ใช้ต้องลบแอปและติดตั้งใหม่อีกครั้ง และสูญเสียข้อมูลที่บันทึกไว้ทั้งหมด มีการแก้ไขเพื่อช่วยแก้ไขปัญหานี้หรือไม่?


person JMD    schedule 07.01.2014    source แหล่งที่มา
comment
คุณเปลี่ยนแปลงอะไรในการอัปเดตครั้งล่าสุดเกี่ยวกับ CoreData   -  person coneybeare    schedule 08.01.2014
comment
ฉันสมมติว่าคุณกำลังใช้ข้อมูลหลัก คุณได้เปลี่ยนชื่อฐานข้อมูลของคุณแล้วหรือยัง? เพิ่มฟิลด์ให้กับโมเดลข้อมูลของคุณแล้วหรือยัง? คุณเคยดูเอกสารการย้ายข้อมูลหลักของ Apple แล้วหรือยัง? developer.apple.com/library/ios/ เอกสารประกอบ/โกโก้/แนวความคิด/   -  person Michael    schedule 08.01.2014
comment
ฉันไม่เข้าใจคำถาม ... การอัปเดต coredata ครั้งล่าสุดไม่ใช่ปัญหาจริงๆ มันอัปเกรดจาก iOS6 เป็น iOS7   -  person JMD    schedule 08.01.2014
comment
ร้านค้าถาวรของคุณจัดเก็บไว้ในที่สำรองข้อมูลการอัปเดต iOS หรือไม่   -  person coneybeare    schedule 08.01.2014
comment
มันเก็บไว้ในไดเร็กทอรีไลบรารีของแอปพลิเคชัน   -  person JMD    schedule 08.01.2014
comment
คุณได้ทดสอบการใช้ข้อมูลหลักโดยตั้งค่าตัวเลือก sqlite เป็น JOURNAL=DELETE หรือไม่ นี่เป็นโหมดเดียวกับที่ใช้ใน iOS7 คุณควรจะสามารถจำลองปัญหาโดยใช้เครื่องจำลองได้โดยการคัดลอกไฟล์ sqlite จากเครื่องจำลอง iOS6 ไปยังเครื่องจำลอง iOS7 หากคุณใช้ iCloud คุณจะไม่สามารถทำเช่นนี้ได้ โหมด WAL ไม่เคยทำงานสำหรับฉัน มันขัดข้องในหลายสถานการณ์ ดังนั้นฉันจึงใช้โหมดบันทึกประจำวันเสมอ   -  person Duncan Groenewald    schedule 08.01.2014
comment
ฉันจะดูดันแคนนี้   -  person JMD    schedule 08.01.2014


คำตอบ (2)


อาจเป็นไปได้ว่าโหมดการบันทึกเริ่มต้น (WAL) เชื่อมต่อกับการสูญเสียข้อมูล CoreData เปิด WAL ตามค่าเริ่มต้นตั้งแต่ iOS 7 ดู Core ข้อมูลและ iOS 7: พฤติกรรมที่แตกต่างกันของร้านค้าถาวร

person Ben Affleck    schedule 07.01.2014
comment
ร้านค้าขัดข้องอย่างต่อเนื่องนี้เกี่ยวข้องกับปัญหาข้อมูลสูญหายหรือไม่ ดูเหมือนว่าพวกเขาจะไม่เหมือนกัน - person JMD; 08.01.2014
comment
@JMD คุณบอกว่าคุณมีการอัปเดต iOS 6 -› 7 ดังนั้นฉันจึงสันนิษฐานว่าสิ่งต่าง ๆ อาจผิดพลาดเนื่องจากค่าเริ่มต้นของ CoreData มีการเปลี่ยนแปลงใน iOS 7 ฉันไม่แน่ใจว่าจะเกิดอะไรขึ้นหากคุณเปิด db ที่ไม่ใช่ WAL sqlite ในโหมด WAL - person Ben Affleck; 08.01.2014
comment
ในทางทฤษฎี @Andy คุณสามารถเปิดไฟล์ sqlite ที่ไม่ใช่ WAL ในโหมด WAL ได้ แต่มีปัญหาที่รายงานจำนวนมากเมื่อใช้โหมด WAL ซึ่งส่วนใหญ่หายไปหากใช้โมเดลเจอร์นัล - person Duncan Groenewald; 08.01.2014
comment
@DuncanGroenewald ถ้าแอปควรทำงานได้ทั้งสอง iOS และแย่กว่านั้นถ้า sqlite ควรซิงโครไนซ์ระหว่างอุปกรณ์ผ่าน iCloud ฉันจะใช้และบังคับใช้โหมดเดียวกันทุกที่เพื่อหลีกเลี่ยงการชนกัน ในกรณีนี้คือโหมดการบันทึกแบบเก่า - person Ben Affleck; 08.01.2014
comment
@แอนดี้ ใช่ ฉันพบว่าโหมดเก่าใช้งานได้ดี ดังนั้นควรใช้มันตอนนี้เสมอ สำหรับแอปเดสก์ท็อป MAC โหมด WAL จะสร้างไฟล์สามไฟล์ซึ่งไม่ใช่ UX ที่ดี ดังนั้นจนกว่า NSPersistentDocument จะใช้แพ็คเกจเพื่อจัดเตรียม wrapper (หรือฉันสร้าง wrapper แพ็คเกจของตัวเอง) ฉันจะต้องยึดติดกับโหมดเจอร์นัล - person Duncan Groenewald; 08.01.2014

ความผิดพลาดคืออะไร? การแสดงบันทึกข้อขัดข้องจะช่วยได้

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

หากคุณสามารถสร้างสถานะข้อขัดข้องขณะทำงานกับ Xcode ได้ มันจะขัดข้องที่ไหน

จุดรหัสคืออะไร?

อยู่ที่ -addPersistentStore... ใช่ไหม? ถ้าเป็นเช่นนั้นข้อผิดพลาดที่ถูกส่งกลับคืออะไร

อัปเดต

เพื่อให้ชัดเจน หากคุณได้รับข้อผิดพลาดทั่วไปในการบันทึก นั่นหมายความว่าคุณไม่สนใจข้อผิดพลาดในการเรียก -addPersistentStore ตรวจสอบข้อผิดพลาดนั้นและดูว่าปัญหาจริงคืออะไร

person Marcus S. Zarra    schedule 07.01.2014
comment
ความผิดพลาดเกิดขึ้นในความพยายามครั้งแรกที่พยายามบันทึกบริบทของวัตถุที่มีการจัดการ - person JMD; 08.01.2014
comment
เกิดเหตุอะไร!? โค้ดบรรทัดไหน.. หากไม่มีรายละเอียดเหล่านี้ คุณจะไม่ได้รับคำตอบ แต่คุณก็จะได้รับการเดา - person Marcus S. Zarra; 08.01.2014