iOS如何从文本字段中保存Core Data中的数据并在tableview中显示这些数据?

时间:2015-04-26 18:03:23

标签: ios objective-c core-data

嗨我是iOS中的新手并且第一次使用Core Data我的任务是我有三个文本字段[name,email,dob]一个保存按钮,当我输入数据i文本字段并按下保存按钮然后数据来自文本字段保存在核心数据中并移至下一页以在tableview中显示数据。 我已经构建了名为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 nad三个属性名称作为名称email和dob。 如果没有,那么我错了吗?

1 个答案:

答案 0 :(得分:2)

如果您已正确设置实体和属性,那么您应该可以添加类似的内容。

Error:The C compiler "C:/MinGW/bin/gcc.exe" is not able to compile a simple test program.
It fails with the following output:
Change Dir: C:/Users/Jim/.clion10/system/cmake/generated/4cb6a70c/4cb6a70c/__default__/CMakeFiles/CMakeTmp
Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTryCompileExec141319549/fast"
C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTryCompileExec141319549.dir\build.make CMakeFiles/cmTryCompileExec141319549.dir/build
mingw32-make.exe[1]: Entering directory 'C:/Users/Jim/.clion10/system/cmake/generated/4cb6a70c/4cb6a70c/__default__/CMakeFiles/CMakeTmp'
"C:\Program Files (x86)\JetBrains\CLion 1.0\bin\cmake\bin\cmake.exe" -E cmake_progress_report C:\Users\Jim\.clion10\system\cmake\generated\4cb6a70c\4cb6a70c\__default__\CMakeFiles\CMakeTmp\CMakeFiles 1
CMakeFiles\cmTryCompileExec141319549.dir\build.make:56: recipe for target 'CMakeFiles/cmTryCompileExec141319549.dir/testCCompiler.c.obj' failed
process_begin: CreateProcess(C:\Users\Jim\AppData\Local\Temp\make68804-1.bat, C:\Users\Jim\AppData\Local\Temp\make68804-1.bat, ...) failed.
make (e=2): Het systeem kan het opgegeven bestand niet vinden.
mingw32-make.exe[1]: *** [CMakeFiles/cmTryCompileExec141319549.dir/testCCompiler.c.obj] Error 2
mingw32-make.exe[1]: Leaving directory 'C:/Users/Jim/.clion10/system/cmake/generated/4cb6a70c/4cb6a70c/__default__/CMakeFiles/CMakeTmp'
Makefile:117: recipe for target 'cmTryCompileExec141319549/fast' failed
mingw32-make.exe: *** [cmTryCompileExec141319549/fast] Error 2
CMake will not be able to correctly generate this project.

但看起来你已经创建了四个不同的实体,而不是一个具有三个属性的实体。 返回到您的数据模型文件,确保您的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]); } 具有三个属性。如果不是简单地通过按“+”按钮创建一个,设置它的名称,并将其属性的类型设置为“字符串”。 并确保删除这些实体名称,电子邮件和dob。希望这会有所帮助。