NSUserDefaults причинява отхвърляне на приложението

Тестерите на Apple бяха отхвърлени от нашето приложение поради нарушаване на указанията:

[2.23 Приложенията трябва да следват Указанията за съхранение на данни в iOS или ще бъдат отхвърлени]

Тъй като съхранихме нашите файлове с база данни без флага NSURLIsExcludedFromBackupKey - той беше архивиран в iCloud - и причини отхвърлянето.

И така, добавихме флага NSURLIsExcludedFromBackupKey към нашите файлове и това намали количеството данни, съхранявани в iCloud.

НО - разбрахме, че NSUserDefaults също заема известно място в iCloud. Ние използваме [NSUserDefaults standardUserDefaults] и нямаме много контрол над него.

Ако отидем на device->settings->iCloud->Storage & BackUP->Manage Storage, можем да видим, че нашето приложение все още взема 0,5 kb данни в iCloud, поради използването на NSUserDefaults. (премахването на употребите на NSUserDefaults в кода ще го намали до 0 - няма данни)

Ще отхвърли ли Apple отново нашето приложение, защото NSUserDefaults взема данни в iCloud?


person igoren    schedule 22.06.2012    source източник
comment
Не, очаква се приложенията да използват NSUserDefaults, колко място заемаха другите ви файлове и къде се съхраняваха?   -  person danielbeard    schedule 22.06.2012
comment
Приложението използва 2,4 MB пространство. Сега отнема между 0,4kb и 0,8kb.   -  person igoren    schedule 22.06.2012
comment
Сега виждам предупреждение в кода: ПРЕДУПРЕЖДЕНИЕ: Фазата на изграждане на копиране на ресурси на пакета съдържа файла Donno-Info.plist на тази цел „Donno-Info.plist“. Виждам, че е копирал plist от пакета. Вече изпратихме приложението на Apple по този начин, мислите ли, че те ще отхвърлят приложението поради тази причина? (може да удвои размера на пространството NSUserDefaults)..   -  person igoren    schedule 22.06.2012
comment
След като изпратихме нашето приложение за преглед в Apple, разбрахме, че имаме това предупреждение в кода: ПРЕДУПРЕЖДЕНИЕ: Фазата на изграждане на Copy Bundle Resources съдържа файла Donno-Info.plist на тази цел... Тъй като всъщност може да удвои plist файла, - Apple ще отхвърли ли приложението поради използване на ненужно пространство в iCloud? (вече бяхме отхвърлени за първи път поради съхраняване на файловете на нашата база данни без флага DO_NOT_BACKUP) Благодаря.   -  person igoren    schedule 22.06.2012
comment
Вашият основен plist файл не трябва да бъде в ресурсите на пакета за копиране.   -  person danielbeard    schedule 25.06.2012
comment
@igoren какво се случи с вашето приложение? Аз съм в наистина подобна ситуация - любопитен съм дали 400 байта ще са проблем.   -  person glenstorey    schedule 20.07.2012
comment
Не бих се притеснявал твърде много, че appname-info.plist ще бъде включен в етап copy resources, тъй като така или иначе е в пакета, наречен info.plist.   -  person A-Live    schedule 26.03.2013


Отговори (1)


Можете да използвате произволно количество данни в NSUserDefaults в приложението си и няма да бъдете отхвърлени. Не съм сигурен какви са максималните данни за него, но не си спомням Apple да е посочила ограничение. Има обаче ограничение за настройките по подразбиране на iCloud. Можете да архивирате своите NSUserDefaults в iCloud, но има строго ограничение от 1Mb за записаните там данни. Така че имайте предвид колко големи стават вашите данни, когато се запазят там.

person Bill Burgess    schedule 26.03.2013
comment
Но NSUserDefaults също не е предназначен за произволно съхранение на данни. Предназначен е само за предпочитания и настройки. - person uchuugaka; 01.02.2014