核心数据读取数据

时间:2014-01-25 04:00:45

标签: objective-c core-data

我是Core Data的新手,我最近一直试图读取和写入数据。我创建了一个名为“Person”的实体,其实体为“name”和“age”。我还有一个文本域名称“personName”和一个名为“personAge”的文本域。

- (IBAction)readData:(id)sender
{
    NSNumber *ageNum = [NSNumber numberWithInteger:personAge.text.integerValue];
    Person *newPerson = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:managedObjectContext];

    newPerson.name = personName.text;
    newPerson.age = ageNum;

    NSLog(@"Person %@ name is %@", personName.text, ageNum);
}

当我加载应用程序时,我得到的只是SIGABRT。即使我把所有方法都放在

 Person *newPerson = [NSEntityDescription insertNewObjectForEntityForName:@"Person"     inManagedObjectContext:managedObjectContext];

感谢所有帮助。

2 个答案:

答案 0 :(得分:1)

要为核心数据添加值,您可以这样做: -

- (IBAction)save:(id)sender {
    NSManagedObjectContext *context = [self managedObjectContext];

    // Create a new managed object
    NSManagedObject *person = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context];
    [person setValue:self.personName.text forKey:@"name"];
    [person setValue:self.personAge.text forKey:@"age"];

    NSError *error = nil;
    // Save the object to persistent store
    if (![context save:&error]) {
        NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
    }    
}

从核心数据中获取值: -

NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"Person"];
    self.personValues = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];

这里personValues是一个NSMutableArray。 为了更好地了解这些,请通过此链接。

http://www.appcoda.com/introduction-to-core-data/

希望这会帮助你。

答案 1 :(得分:0)

如果您对核心数据不熟悉,请尝试使用MagicalRecord库,该库提供一系列辅助类别,用于处理核心数据的大量锅炉板设置。

这让我想到你要问的问题:你确定你的核心数据堆栈设置正确吗?检查以确保您的托管对象上下文与适当的持久性存储协调器一起有效。

最好的办法:在Core Data堆栈设置期间设置一个断点并逐步完成它,确保一切设置正确。或者安装MagicalRecord并对[MagicalRecord setupAutomigratingCoreDataStack]进行一次方法调用......