【问题标题】:iOS How to save data in Core Data from Text Fields and show these data in tableview?iOS 如何从文本字段中保存核心数据中的数据并在表格视图中显示这些数据?
【发布时间】:2015-07-05 01:23:40
【问题描述】:

嗨,我是 iOS 的新手,第一次使用 Core Data,我的任务是我有三个文本字段 [姓名、电子邮件、出生日期],当我将数据放入文本字​​段并按下保存按钮然后数据来自文本字段保存在核心数据中并移至下一页以在表格视图中显示数据。 我已经构建了名为 CoreData.xcdatamodeld 的核心数据文件和一个实体和三个属性名称、电子邮件和出生日期。

-(IBAction)saveButton:(id)sender{
    if (switchButton.isOn)
    {
        NSManagedObjectContext *context = [self managedObjectContext];
        NSManagedObject *transaction = [NSEntityDescription insertNewObjectForEntityForName:@"Shruti" inManagedObjectContext:context];

        NSManagedObject *name = [NSEntityDescription insertNewObjectForEntityForName:@"name" inManagedObjectContext:context];
        NSManagedObject *email = [NSEntityDescription insertNewObjectForEntityForName:@"email" inManagedObjectContext:context];
        NSManagedObject *dob = [NSEntityDescription insertNewObjectForEntityForName:@"dob" inManagedObjectContext:context];

        [name setValue:self.nameTextField.text forKey:@"name"];
        [email setValue:self.emailTextField.text forKey:@"email"];
        [dob setValue:self.dobTextField.text forKey:@"dob"];

        NSLog(@"Switch is On and data is saved in Core Data");

        TableViewController *objOfView = [[TableViewController alloc]initWithNibName:@"TableViewController" bundle:nil];
        [self.navigationController pushViewController:objOfView animated:YES];
    }
    else{
        NSLog(@"Switch is Off and data not saved in Core Data");
    }
}

在核心数据中,我的实体名称为 Shruti,三个属性名称为名称 email 和 dob。 如果不正确,那我错在哪里?

【问题讨论】:

  • 当我按下然后应用程序因错误而崩溃
  • 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“+entityForName: nil 不是搜索实体名称“Shruti”的合法 NSManagedObjectContext 参数”
  • 您确定您的 persistentStoreCoordinator 有效/创建正确吗?
  • 您已经为 *transaction 创建了一个NSManagedObject,但您没有为其设置价值。您的姓名、电子邮件和出生日期不应该是 *transaction 的属性吗??

标签: ios objective-c core-data


【解决方案1】:

如果您正确设置了实体和属性,那么您应该能够添加类似这样的内容。

NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *transaction = [NSEntityDescription insertNewObjectForEntityForName:@"Shruti" inManagedObjectContext:context];


[transaction setValue:self.nameTextField.text forKey:@"name"];
[transaction setValue:self.emailTextField.text forKey:@"email"];
[transaction setValue:self.dobTextField.text forKey:@"dob"];

// Save the context
NSError *error = nil;
if (![context save:&error]) {
    NSLog(@"Save Failed! %@ %@", error, [error localizedDescription]);
}

但看起来您创建了四个不同的实体,而不是一个具有三个属性的实体。 返回您的数据模型文件并确保您的Shruti 具有它的三个属性。如果不是简单地按“+”按钮创建一个,设置它的名称,并将它的属性类型设置为“字符串”。 并确保删除那些实体名称、电子邮件和出生日期。希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多