首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重命名xcdatamodel文件

重命名xcdatamodel文件
EN

Stack Overflow用户
提问于 2011-04-11 20:22:03
回答 10查看 13.7K关注 0票数 22

要重命名.xcdatamodel文件,需要做什么。正在重命名.xcdatamodel文件名,并正在更改...

代码语言:javascript
复制
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"newfilename" withExtension:@"momd"];
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];    
return __managedObjectModel;

代码语言:javascript
复制
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"newfilename.sqlite"];

不起作用!我得到以下错误:

代码语言:javascript
复制
2011-04-11 17:19:54.164 ProjectName[5826:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Cannot create an NSPersistentStoreCoordinator with a nil model'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x00fa15a9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x010f5313 objc_exception_throw + 44
    2   CoreData                            0x00013853 -[NSPersistentStoreCoordinator initWithManagedObjectModel:] + 419
    3   ProjectName                         0x00003471 -[ProjectNameAppDelegate persistentStoreCoordinator] + 257
    4   ProjectName                         0x000031a4 -[ProjectNameAppDelegate managedObjectContext] + 100
    5   ProjectName                         0x000028ca -[ProjectNameAppDelegate makeSplitViewController] + 762
    6   ProjectName                         0x00002d44 -[ProjectNameAppDelegate application:didFinishLaunchingWithOptions:] + 68
    7   UIKit                               0x001f3c89 -[UIApplication _callInitializationDelegatesForURL:payload:suspended:] + 1163
    8   UIKit                               0x001f5d88 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 439
    9   UIKit                               0x00200617 -[UIApplication handleEvent:withNewEvent:] + 1533
    10  UIKit                               0x001f8abf -[UIApplication sendEvent:] + 71
    11  UIKit                               0x001fdf2e _UIApplicationHandleEvent + 7576
    12  GraphicsServices                    0x018f9992 PurpleEventCallback + 1550
    13  CoreFoundation                      0x00f82944 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
    14  CoreFoundation                      0x00ee2cf7 __CFRunLoopDoSource1 + 215
    15  CoreFoundation                      0x00edff83 __CFRunLoopRun + 979
    16  CoreFoundation                      0x00edf840 CFRunLoopRunSpecific + 208
    17  CoreFoundation                      0x00edf761 CFRunLoopRunInMode + 97
    18  UIKit                               0x001f57d2 -[UIApplication _run] + 623
    19  UIKit                               0x00201c93 UIApplicationMain + 1160
    20  ProjectName                         0x00002599 main + 121
    21  ProjectName                         0x00002515 start + 53
)
terminate called after throwing an instance of 'NSException'

注意:我使用的是Xcode4。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2011-05-04 00:41:45

我在Xcode4上也遇到了同样的问题,我不知道Xcode3的行为是什么。

首先,当您在xcode中添加核心数据模型时,实际上会得到一个与.xcodeproj文件类似的.xcdatamodeld文件。在finder中,你可以右击它并“显示包内容”。您将看到它包含一个.xcdatamodel文件。

在我看来,您不能使用xcode完全重命名它。Xcode将更改您在UI中看到的包文件( momd)的名称,但在文件系统上它实际上并没有更改。

您得到的nil模型错误是因为它找不到新的文件名momd,因为它在磁盘上仍然具有旧名称。(我猜)

我使用我想要的名称创建了一个新模型,然后在现有模型中,您可以单击并拖动并选择您的实体,然后将它们粘贴到新模型文件中。然后,您可以删除旧的并将所有更改提交到您的SCM。

票数 25
EN

Stack Overflow用户

发布于 2012-03-12 18:41:55

有一个名为.xccurrentversion的隐藏文件,它应该与您的whatever.xcdatamodeld文件位于相同的位置。里面有一个对你的模型的引用,需要用新的名称更新。

在某些情况下,您必须从项目中删除.xcdatamodeld文件,然后重新添加它才能正常工作。

票数 28
EN

Stack Overflow用户

发布于 2011-10-12 03:18:24

感谢你们帮助我最终解决了这个问题。以下是我在Xcode 4.2中重命名项目后如何修复此问题的方法:

1)删除项目中对*.xcdatamodeld文件的引用。如果它类似于我的编辑器,那么当您选择它时,编辑器将不会加载。这告诉我在重命名中有一个链接断开了。

2)右击项目的.xcdoeproj文件,选择“显示包内容”。

3)将找到的*.xcdatamodeld文件拖回到您的项目中。好了。

我的应用程序构建

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5621178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档