Aplikasi mogok tanpa penyimpanan yang persisten setelah pembaruan iOS7

Saya memiliki aplikasi yang mogok dengan 'NSPersistentStoreCoordinator tidak memiliki penyimpanan yang persisten. Itu tidak dapat melakukan operasi penyimpanan.' setelah pengguna meningkatkan dari iOS6 ke iOS7. Satu-satunya perbaikan untuk ini adalah menghapus aplikasi karena penyimpanan persisten semuanya kacau (tentu saja)

Saya benar-benar tidak ingin pengguna harus menghapus aplikasi dan menginstalnya kembali dan kehilangan semua data yang disimpan. Apakah ada perbaikan untuk membantu mengatasi masalah ini?


person JMD    schedule 07.01.2014    source sumber
comment
Apa yang Anda ubah pada pembaruan terakhir sehubungan dengan CoreData?   -  person coneybeare    schedule 08.01.2014
comment
Saya berasumsi Anda menggunakan data inti. Sudahkah Anda mengubah nama DB Anda? Menambahkan bidang ke model data Anda? Pernahkah Anda melihat dokumen migrasi data inti Apple? developer.apple.com/library/ios/ dokumentasi/kakao/konseptual/   -  person Michael    schedule 08.01.2014
comment
Saya tidak mengerti pertanyaannya... pembaruan terakhir pada coredata sebenarnya bukan masalahnya. peningkatannya dari iOS6 ke iOS7   -  person JMD    schedule 08.01.2014
comment
Apakah penyimpanan persisten Anda disimpan di tempat yang dicadangkan di seluruh pembaruan iOS?   -  person coneybeare    schedule 08.01.2014
comment
itu disimpan di direktori perpustakaan aplikasi   -  person JMD    schedule 08.01.2014
comment
Sudahkah Anda menguji menggunakan data inti dengan opsi sqlite disetel ke JOURNAL=DELETE, ini adalah mode yang sama yang digunakan di iOS7. Anda seharusnya dapat menduplikasi masalah menggunakan simulator dengan menyalin file sqlite dari simulator iOS6 ke simulator iOS7. Jika Anda menggunakan iCloud maka Anda tidak akan dapat melakukan hal ini. Mode WAL tidak pernah berfungsi untuk saya, mode ini mogok dalam beberapa skenario berbeda jadi saya selalu menggunakan mode jurnal sekarang.   -  person Duncan Groenewald    schedule 08.01.2014
comment
Aku akan memeriksa duncan ini.   -  person JMD    schedule 08.01.2014


Jawaban (2)


Bisa jadi mode penjurnalan default (WAL) terhubung dengan kehilangan data. CoreData mengaktifkan WAL secara default sejak iOS 7. Lihat Inti Data dan iOS 7: Perilaku penyimpanan persisten yang berbeda

person Ben Affleck    schedule 07.01.2014
comment
apakah kerusakan toko yang terus-menerus ini terkait dengan masalah kehilangan data? sepertinya mereka tidak sama. - person JMD; 08.01.2014
comment
@JMD Anda menyebutkan bahwa Anda memiliki pembaruan iOS 6 -› 7, jadi saya berasumsi ada yang tidak beres karena default CoreData telah berubah di iOS 7. Saya tidak begitu yakin apa yang terjadi jika Anda membuka sqlite db non-WAL dalam mode WAL. - person Ben Affleck; 08.01.2014
comment
@Andy secara teori Anda dapat membuka file sqlite non-WAL dalam mode WAL tetapi ada cukup banyak masalah yang dilaporkan saat menggunakan mode WAL, banyak di antaranya hilang jika model jurnal digunakan. - person Duncan Groenewald; 08.01.2014
comment
@DuncanGroenewald baiklah, jika aplikasi harus berfungsi di kedua iOS, lebih buruk lagi jika sqlite harus disinkronkan antar perangkat melalui iCloud, saya akan tetap menggunakan dan menerapkan mode yang sama di mana saja untuk menghindari tabrakan. Dalam hal ini mode penjurnalan lama. - person Ben Affleck; 08.01.2014
comment
@Andy ya menurut saya mode lama berfungsi dengan baik jadi selalu gunakan sekarang. Untuk aplikasi desktop MAC, mode WAL membuat tiga file yang bukan merupakan UX yang bagus sehingga hingga NSPersistentDocument menggunakan paket untuk menyediakan pembungkus (atau saya membuat pembungkus paket sendiri), saya harus tetap menggunakan mode jurnal. - person Duncan Groenewald; 08.01.2014

Apa kecelakaannya? Menampilkan log kerusakan akan membantu.

Saya curiga Anda mengalami masalah migrasi tetapi tanpa log kerusakan itu akan sulit untuk menebaknya.

Jika Anda dapat membuat status mogok saat menjalankan Xcode, di mana ia mogok?

Apa inti kodenya?

Apakah di -addPersistentStore...? Jika ya, kesalahan apa yang dikembalikan.

memperbarui

Untuk lebih jelasnya, jika Anda mendapatkan kesalahan umum saat menyimpan, itu berarti Anda mengabaikan kesalahan pada panggilan -addPersistentStore. Periksa kesalahan tersebut dan cari tahu apa masalah sebenarnya.

person Marcus S. Zarra    schedule 07.01.2014
comment
Kecelakaan terjadi pada upaya pertama mencoba menyimpan konteks objek yang dikelola - person JMD; 08.01.2014
comment
Kecelakaan apa itu?!? Baris kode apa. Tanpa perincian ini Anda tidak akan mendapatkan jawaban, Anda hanya akan mendapat tebakan. - person Marcus S. Zarra; 08.01.2014