Как да включа голям набор от данни с моето приложение за iOS при инсталиране?

Имам голяма база данни с данни, с които искам приложението ми да се инсталира, твърде голяма за NSDefaults, по същество е твърде голяма, за да я въвеждам (генерирана е от компютър).

Мога лесно да го сериализирам в йерархичен NSDictionary формат и pList, но съм объркан как да получа този pList от моето работещо приложение във файл, който Xcode ще включи в компилациите на приложението, и къде да го инсталирам и т.н.

Опитах се да изхвърля моите pLists с .description, за да опитам просто да ги копирам и поставя в Xcode .plist файл. Но pList.description извежда във формат

Problem8 = {
Term1 = 3;
};

Докато Plist файловете в Xcode изискват формат като

<key>Problem8</key>
<string>3</string>
<key>Term1</key>

Чувствам се доста тъпо тук, очевидно пропускам нещо лесно, за да стигна до правилния формат или да ги запазя сериализирани на диск по начин, който Xcode ще включва в бъдещи компилации.


person SafeFastExpressive    schedule 12.12.2013    source източник
comment
Един проблем с генерираните данни е, че не мога да ги регенерирам за потребителя, тъй като има някои произволни стойности, които биха ги направили различни, ако бъдат регенерирани. Искам този набор от данни да е идентичен за всеки потребител (данните описват въвеждащите нива за дадена игра), така че трябва да включа тези данни като файл или pList/и т.н. при инсталиране.   -  person SafeFastExpressive    schedule 12.12.2013


Отговори (1)


Ако имате речник, използвайте writeToFile:atomically:, за да го запишете във файл, и initWithContentsOfFile:, за да го заредите отново.

Въпреки това, ако има много данни и особено ако нямате нужда да се зареждат всички през цялото време, помислете за запазване на хранилище за основни данни и внедряване на това.

person Wain    schedule 12.12.2013
comment
Разбирам как да го направя. Но как да направя този файл част от моя инсталационен пакет за моето приложение в Xcode, така че да бъде включен в моето изпращане на приложение/дистрибуции на TestFlight/и т.н.? - person SafeFastExpressive; 12.12.2013
comment
Добавете файла към фаза на изграждане на файлове за копиране (като изображения се добавят към изграждането). - person Wain; 13.12.2013
comment
Така че, ако разбирам това правилно, стартирам приложението на моето устройство/симулатор, генерирам файла в неговата локална пясъчна среда и използвам организатора, за да изтегля копие във файловата система на моя mac и да копирам файла с данни от там в моя проект? Благодаря за коментарите ви, много оценявам, че отделихте време, за да ми помогнете в това. - person SafeFastExpressive; 13.12.2013
comment
да Или можете да имате настолно приложение, което вместо това генерира файла. Ако приложението може да го генерира, тогава защо да разполагате с голям файл? - person Wain; 13.12.2013