【发布时间】:2010-12-16 00:52:40
【问题描述】:
我有一个使用核心数据运行的基于文档的应用程序。对象模型具有三个具有多个属性的实体。它似乎工作得很好——我可以填写一些信息并保存它,没问题。然而,当我打开生成的文件时,它总是在我还没有触及任何东西之前打开“脏”,并且一些字段有时是空白的。
我的意思是,有时您打开文件,这些字段显示为空,有时您打开文件,它们显示正确的数据。空白的属性仅与其中一个实体相关联,并显示在同一个NSTabView 中。它们是一些 NSStrings 在文本字段和标签中显示为值。
更新:
感谢@ughoavgfhw 的建议,我切换到XML 存储并发现两个问题:每次在[MyDocument init] 中打开文档时我都在创建一个新实体,而不是从持久存储中加载保存的实体,但现在我'我在获取那个时遇到了问题。
在保存后生成的 XML 文件中,它确实包含以下内容(给我带来麻烦的实体和属性):
<object type="STORY" id="z102">
<attribute name="title" type="string">test 6</attribute>
<attribute name="descript" type="string">this is a test</attribute>
</object>
我尝试用这个来获取它:
- (Story *)getSavedStory {
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Story" inManagedObjectContext:[self managedObjectContext]];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:entityDescription];
NSError *error = nil;
NSArray *array = [[self managedObjectContext] executeFetchRequest:request error:&error];
if (array == nil) {
NSLog(@"%@",error);
return nil;
} else {
return [array lastObject];
}
}
打开该持久存储后,该请求返回一个空数组(并且没有错误)。关于从这里去哪里的任何提示?
【问题讨论】:
-
你能贴出你打开文件的代码吗?
-
我还没有写任何具体的东西来处理这个问题,所以我很确定它继承了
NSPersistentDocument的功能。
标签: objective-c cocoa macos core-data