如何在Mac(osx)应用程序中保存核心数据中的文本字段值?

时间:2015-04-15 22:18:50

标签: objective-c core-data

我已经为使用核心数据的osx创建了简单的应用程序(它不是基于文档的应用程序)

我创建了一个名为myTable的实体,我在其中有3个属性(myString1,myString2和myString3),这些属性都是字符串。

我在.xib文件中创建了3个文本字段和一个保存按钮。在AppDelegate.h中,我为文本字段创建了3个IBOutlet,为保存按钮创建了1个IBAction。

在AppDelegate.m中,到目前为止我有以下代码: (为简单起见,此处省略了默认代码。)

- (IBAction)saveButtonHasBeenClicked:(id)sender {
//fill the array

NSArray * myArray = [[NSArray alloc]initWithObjects:[_firstTextField stringValue],[_secondTextField stringValue], [_thirdTextField stringValue], nil];

// how to save this array in coredata?


}

如果我运行以下代码:

for (NSString *detail in myArray) {
    NSLog(@"Detail is: %@",detail);
}

我可以验证数组是否已填充文本字段的值。但是,我不确定是否应该将值保存在数组中,然后将它们插入到coredata中,或者我应该单独插入每个文本字段值。

我知道我应该做一些关键:值:编码在这里,但我不知道从哪里开始。任何人都可以帮我这个代码,或发布一些教程的链接?我知道如何使用NSTableView和绑定来保存数据,但我无法通过文本字段和编码找到自己的方式。

1 个答案:

答案 0 :(得分:0)

以防万一其他人需要解决方案,这里是:

    NSManagedObject *myObject = [NSEntityDescription insertNewObjectForEntityForName:@"myTable" inManagedObjectContext:[self managedObjectContext]];
    [myObject setValue:[__firstTextField stringValue] forKey:@"myString1"];
    [myObject setValue:[_secondTextField stringValue] forKey:@"myString2"];
    [myObject setValue:[_thirdTextField stringValue] forKey:@"myString3"];
    //[self saveAction:myObject];
    // above solution works also, but the solution bellow is better
    NSError *myError = nil;
    if (![[self managedObjectContext]save:&myError]) {
        NSLog(@"Error while attempting to save the data");
    }

毕竟我根本不需要阵列,所以我删除了那部分。

干杯