【问题标题】:How to generate a default record in an entity (Core Data)?如何在实体(核心数据)中生成默认记录?
【发布时间】:2011-12-14 10:08:54
【问题描述】:

我刚刚在 Core Data 中迈出了第一步,并想更改我的一段代码,该代码使用一个简单的 plist 来存储程序的一些偏好数据。我想改用核心数据。只是出于教育原因。

所以基本上我创建了一个名为“setup”的实体,其中包含“语言”、“调试信息”、“服务器 ip”等属性。实体中应该只有一个数据记录,因为保持多个设置没有意义。

然后我在界面生成器中创建了 GUI,方法是在 GUI 窗口上拖动实体。我选择了“单项视图”。我可以运行代码但是有一个问题:

我无法更改控件的内容。我认为这仅仅是因为实体中没有记录。所以我的问题是,如何创建一个“默认”条目?我不想使用“主/明细视图”,因为我只需要一条数据记录,它应该自动生成,以防尚未创建 storedata 文件。

【问题讨论】:

  • “核心逻辑”?你的意思是“核心数据”吗?
  • 是的,很抱歉造成混乱:(

标签: xcode macos cocoa core-data cocoa-bindings


【解决方案1】:

到目前为止我已经解决了这个问题。我在方法“- (NSManagedObjectContext *) managedObjectContext”中添加了以下几行。它在第一次调用该方法时在实体中创建一个默认记录。属性的值在数据模型中设置。

NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Setup" inManagedObjectContext:managedObjectContext]];
[request setIncludesSubentities:NO]; //Omit subentities. Default is YES (i.e. include subentities)
NSError *err;
NSUInteger count = [managedObjectContext countForFetchRequest:request error:&err];
if(count==NSNotFound || count==0) 
{
    [NSEntityDescription insertNewObjectForEntityForName:@"Setup" inManagedObjectContext: managedObjectContext];
}

[request release];

我不确定这是否是正确的处理方式,尤其是我怀疑这是正确的地方。我缺少在设置核心数据后调用的方法。非常欢迎任何建议!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多