如何为不同平台(iPhone和Mac OS X)创建具有多个目标的xcode项目
我已经写了几个Core Data iPhone应用程序,我遇到了一个一直存在的问题,我希望这个问题是iPhone开发的常见模式.也就是说,我有一个或多个命令行数据加载器来创建Core Data数据库,然后我有我的iPhone应用程序.由于模型文件是共享的,并且加载器是项目的一个组成部分,我希望它是一个单独的项目.
使用iPhone OS目标和命令行目标创建项目的正确方法是什么?我的所有尝试都没有奏效 – 我有代码签名,调试和配置问题. 到目前为止,这是我最好的尝试: >创建一个iPhone项目 此时我没有可执行文件. (相反,如果您创建一个新的Command Line Utility项目,则可执行文件会自动与您的目标关联.) 如果我创建一个自定义可执行文件,那么我有一些麻烦:(1)更改目标不会更改可执行文件,因为您无法将自定义可执行文件链接到目标,(2)调试命令行程序是有问题的,因为断点在XCode中设置没有注册(调试可执行文件时,行号上的V形变为橙色),所以我必须闯入正在运行的代码,然后从控制台手动处理调试,(3)最令人沮丧的是,如果我创建我的iPhone应用程序的正确配置版本,然后将iPhone应用程序传输到设备失败,抱怨配置文件与代码签名权利不匹配.绝对不是这种情况,因为我只为iPhone目标的分发版本设置了配置文件和授权文件,但无论多么烦恼,我都无法在设备上安装目标. (如果我使用命令行工具创建一个具有相同代码和代码签名的新项目,那么我可以安装AdHoc配置的应用程序.) 那么……我应该遵循一些其他模式吗? Xcode配置是严重的伏都教. 解决方法
好的,我认为你的问题需要重新定义.
如你所说:
您的要求是为您的核心数据iPhone应用程序预先填充数据库,并且您希望让该工具与最新的Core Data模型保持一致.我对吗? 如果我的理解是正确的.我想,不是创建一个专用的命令行工具来预先填充数据库,而是在单元测试目标中执行它将是一个更好的选择. 我的解决方案 这是我正在使用我的核心数据iOS应用程序. >使用核心数据支持和逻辑测试支持创建项目. 如果您没有太多要导入的数据,则可以将2和3集成到一个测试用例中. 一些好处 >您可以使用?k删除以前创建的所有内容. 做一些事情. >如果您使用的是Xcode 4.1,我建议您升级到Xcode 4.2甚至Xcode 4.3,因为Xcode 4.1,您将无法直接访问MOC和模型文件. (至少,根据我的经验)Xcode 4.2支持单元测试应用程序直接访问文档文件夹中的数据库文件.稍后您需要做的就是找到sqlite文件并覆盖项目中的文件. 真实样本 您可以在github的开源项目中看到我是如何做到这一点的 这是我的测试用例的简短代码. - (void)setUp { [super setUp]; // Set-up CoreData yourMocObj = ...; } - (void)tearDown { // Tear-down code here. [yourMocObj save]; [super tearDown]; } - (void)test_PopulateData{ // Get the path for the data file. NSString *plistPath = [[NSBundle bundleForClass:[algorithms_iOSTests class]] pathForResource:@"AlgorithmsMasterViewData" ofType:@"plist"]; NSArray *dataArray = [NSArray arrayWithContentsOfFile:plistPath]; NSEntityDescription *yourEntity = [NSEntityDescription entityForName:.. inManagedObjectContext:yourMocObj]; [dataArray enumerateObjectsUsingBlock:^(NSDictionary *aCategoryDict,NSUInteger idx,BOOL *stop) { // Category is a custom subclass of NSManagedObject. Category *aCategory = [[Category alloc] initWithEntity:yourEntity insertIntoManagedObjectContext:yourMocObj]; [aCategory safelySetValuesForKeysWithDictionary:aCategoryDict]; }]; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |