Cydia应用程序文档文件夹未创build
我一直在研究Core Data iOS应用程序,通过苹果的“渠道” – iOS模拟器和Xcode安装完美工作,但是当我尝试手动将其安装到设备上时,应用程序崩溃。 我的主要目标是把应用程序放在Cydia上。
为Cydia准备一个应用程序的指南我阅读这篇文章,我在底部说
Appstore应用程序具有由安装过程创build的“文档”文件夹。 越狱应用程序不。 这是由应用程序创build自己的文件夹。 如果您需要这种types的文件夹,则必须在applicationDidFinishLaunching函数中使用简单的mkdir命令来创build此文件夹。 只需添加一个简单的函数:mkdir(“/ var / mobile / Library / YOURAPPNAME”,0755); 如果文件夹已经存在,没有任何伤害。 您希望这样做,因为安装过程以root用户身份运行,应用程序以用户移动方式运行。 如果Cydia为你做这个,那么这个文件夹会有不正确的权限。
我不太了解核心数据的工作原理,但是我知道核心数据“数据库”存储在“文档”文件夹中,现在我相信这是我的应用崩溃的原因。
mkdir函数在创build“文档”文件夹时不起作用。
我将如何去创build一个Documents文件夹,以及如何让它与Core Data一起工作,确保数据库从我创build的这个文件夹中加载?
提前致谢
很可能你仍然在创build和加载CoreData数据库文件的方法中使用AppStore友好的Documentspath(我认为Xcode会默认把这些放在你的AppDelegate中)。
检查加载persistentStorageCoordinator
的方法并查找如下所示的行:
NSURL *storeUrl = [NSURL fileURLWithPath: [docPath stringByAppendingPathComponent:@"my_cool_app.sqlite"]];
并确保docPath
是“/ var / mobile / Library / My_Cool_App”,而不是源自标准的AppStore friendly:
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *docPath = [documentPaths objectAtIndex:0];
您可能想创build一个方法,根据您编译应用程序的目标返回适当的Documents目录:
+(NSString *)documentsDirectoryPath { #ifdef JAILBREAK NSString *documentPath = @"/var/mobile/Library/My_Cool_App"; if (![[NSFileManager defaultManager] fileExistsAtPath:documentPath]) { [[NSFileManager defaultManager] createDirectoryAtPath:documentPath withIntermediateDirectories:NO attributes:nil error:NULL]; } return documentPath; #else NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); return [documentPaths objectAtIndex:0]; #endif }
- 如果核心数据设置为相同的值,核心数据是否将其视为已更改的值?
- 核心数据并发队列风格MOC获取者线程安全
- 通过NSManagedObjectSubclass上的Swift Computed属性对NSFetchedResultsController进行sorting
- 如何使用Objective-C将audio数据保存到CoreData或从CoreData获取audio数据?
- 获取结果时发生崩溃控制器在保存后台MOC后更新表
- 核心数据布尔键值更改不反映在提取
- 如何从每个用户界面的空核心数据开始在Swift中testing断言?
- 核心数据自定义策略的select器语法是什么?
- 如何在NSDate中使用NSPredicate进行分组 – 需要创build多个UITableView部分