Ios 由于文档文件夹中的sqllite db,被apple拒绝

Ios 由于文档文件夹中的sqllite db,被apple拒绝,ios,sqlite,file-io,fmdb,nsdocumentdirectory,Ios,Sqlite,File Io,Fmdb,Nsdocumentdirectory,我有一个sqlite db,它使用FMDB包装器,在启动时将db放在documents文件夹中。用户还可以通过itunes的documents文件夹上传文件 但appstore拒绝了该应用程序,原因如下: 启用文件共享后,整个文档文件夹将用于文件共享。不打算通过文件共享功能供用户访问的文件应存储在应用程序包的另一部分中。如果应用程序不需要文件共享功能,则Info.plist中的UIFileShareingEnabled键不应设置为true 是否有任何解决方法将db放置在某个位置或限制在docum

我有一个sqlite db,它使用FMDB包装器,在启动时将db放在documents文件夹中。用户还可以通过itunes的documents文件夹上传文件

但appstore拒绝了该应用程序,原因如下:

启用文件共享后,整个文档文件夹将用于文件共享。不打算通过文件共享功能供用户访问的文件应存储在应用程序包的另一部分中。如果应用程序不需要文件共享功能,则Info.plist中的UIFileShareingEnabled键不应设置为true


是否有任何解决方法将db放置在某个位置或限制在documents文件夹中,以便获得apple的批准。

您必须将文件路径从document目录更改为Cache目录:

在您的代码“NSDocumentDirectory”中搜索此文件,并替换为“NSCachesDirectory”,让所有内容保持不变,那么您的数据库将在启动时自动移动到缓存目录,苹果也不会拒绝它。:)

希望能有帮助

编辑:若要设置自己的数据库路径,请在代码中传递“cacheDirectoryPath”字符串,而不是路径,下面的代码将为您创建此cacheDirectoryPath:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *cacheDirectoryPath = [paths objectAtIndex:0];

您可以将它们放在《文件系统编程指南》的Library folderSee中。如果数据库不是只读的,则caches目录是一个错误的选择。缓存目录未备份,在应用程序更新后将无法保存。如果数据可写,请使用
NSApplicationSupportDirectory
。请注意,必须首先创建此目录。谢谢,我的数据库不是只读的,因此NSApplicationSupportDirectory是一个更好的选择。有人能向我解释一下将代码放在哪里吗?它应该在appdelegate中吗@哈桑瓦希德