NSUserDefaults导致应用程序被拒绝

8

由于违反了指南,苹果的测试人员拒绝了我们的应用程序:

[2.23 应用程序必须遵循iOS数据存储准则,否则将被拒绝]

由于我们没有使用NSURLIsExcludedFromBackupKey标志来存储数据库文件 - 它被备份到iCloud中 - 导致了被拒绝。

因此,我们为文件添加了NSURLIsExcludedFromBackupKey标志,这减少了在iCloud中存储的数据量。

但是-我们意识到NSUserDefaults在iCloud中也占用了一定的空间。 我们正在使用[NSUserDefaults standardUserDefaults],并且对其没有太多的控制。

如果我们进入设备->设置->iCloud->存储备份->管理存储,我们可以看到我们的应用程序仍然在iCloud中占用0.5 kb的数据,因为使用了NSUserDefaults。 (从代码中删除NSUserDefaults的使用将使其减少到0-无数据)

苹果会因为NSUserDefaults在iCloud中占用数据而再次拒绝我们的应用程序吗?


不,预计应用程序将使用NSUserDefaults,您的其他文件占用了多少空间,存储在哪里? - danielbeard
该应用程序使用了2.4 MB的空间。现在它只需要0.4kb到0.8kb之间的空间。 - igoren
在将我们的应用提交给苹果进行审核后,我们发现代码中出现了以下警告:“警告:拷贝捆绑资源构建阶段包含此目标的Donno-Info.plist文件...”如果这可能会导致plist文件重复,则苹果会因为使用不必要的iCloud空间而拒绝该应用吗?(由于未使用DO_NOT_BACKUP标志存储数据库文件,我们已经被拒绝了第一次)谢谢。 - igoren
你的主要 plist 文件不应该在复制的捆绑资源中。 - danielbeard
不必太担心将 appname-info.plist 包含到 copy resources 阶段,因为它已经在捆绑包中被命名为 info.plist - A-Live
显示剩余2条评论
1个回答

3

在您的应用程序中,可以使用任意数量的数据存储在NSUserDefaults中,而不会被拒绝。我不确定它的最大数据量是多少,但我不记得苹果有指定一个限制。然而,在iCloud默认设置中有一个限制。您可以将NSUserDefaults备份到iCloud中,但在那里保存的数据有严格的1Mb限制。因此,请注意当保存在那里时,您的数据变得多大。


1
但 NSUserDefaults 也不适用于任意数据存储。它只适用于偏好设置和设置。 - uchuugaka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接