使用iOS中的核心数据映射Business Objects

时间:2012-05-16 13:29:09

标签: ios core-data mapping

我是iOS新手。任何人都可以告诉我如何使用Core Data映射我的BO,以便我可以在我的项目中重用映射。这是我的代码

- (void) saveData
{       
    CoredataAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    NSManagedObjectContext *context = [appDelegate managedObjectContext];

    NSManagedObject *newContact;

    newContact = [NSEntityDescription insertNewObjectForEntityForName:@"Person" inManagedObjectContext:context];

    [newContact setValue:firstName.text forKey:@"firstName"];
    [newContact setValue:lastName.text forKey:@"lastName"];
    [newContact setValue:driverLicenceno.text forKey:@"driverLicenceNumber"];
    [newContact setValue:state.text forKey:@"state"];
    [newContact setValue:phoneNO.text forKey:@"phoneNumber"];
    [newContact setValue:injuryStatus.text forKey:@"injuryStatus"];
    [newContact setValue:emailAddress.text forKey:@"emailAddress"];

    NSLog(@"fName%@",firstName.text);
    firstName.text = @"";
    NSLog(@"fName%@",firstName.text);
    lastName.text = @"";
    driverLicenceno.text = @"";
    state.text = @"";
    phoneNO.text = @"";
    injuryStatus.text = @"";
    emailAddress.text = @"";

    NSError *error;
    [context save:&error];
    status.text = @"Person saved";
}

有没有其他方法可以将我的BO映射到除此之外的coredata?

2 个答案:

答案 0 :(得分:2)

首先,您必须创建已创建的Coredata数据库。接下来在coredata模型中选择Entity面板中的表。右击项目hirarchy树中的模型。选择新文件,选择coredata和NSManagedObjectSubclass并保存。它为coredata表创建模型类,您可以在方法中使用它。enter image description here

此图显示了选择db和table以右键单击并选择NSManagedObjectSubClass

enter image description here

此图像显示选择的第一个coredata而不是NSManagedObjectSubClass,然后在您单击下一步时,它会显示您的名称并将其保存在项目中。 我希望这会对你有所帮助!

答案 1 :(得分:1)

  

告诉我如何应用sql查询,如update,delete,find second   核心数据中的max,join,view等

由于核心数据涵盖了很多内容,我可以给出一些提示。

首先,处理核心数据意味着处理“生活”在一种名为NSManagedObject的暂存器中的托管对象。将其视为一种容器图,其中包含基于您创建的数据模型从文件(例如sql文件)检索的对象。在您不保存上下文之前,更改将驻留在内存中,而不是物理存储。

[moc save:&error];

使用NSManagedObject,您可以创建,更新,查询或删除对象。当然还要做其他事情。

如果您需要插入新的托管对象(在您的数据模型中声明),您可以使用insertNewObjectForEntityForName:inManagedObjectContext:

如果您需要执行查询,则需要查看NSFetchRequest课程。设置NSFetchRequest等同于SQL语言中的SELECT状态。

这是一个简单的例子:

NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:[NSEntityDescription entityForName:@"Person" inManagedObjectContext:moc]];

NSError *error = nil;
NSArray *results = [moc executeFetchRequest:request error:&error];

// error handling code

数组results包含sqlite文件中包含的所有托管对象(人员)。如果要获取特定对象(或更多对象),则需要对该请求使用谓词。例如:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstName == %@", @"John"];
[request setPredicate:predicate]; 

在这种情况下,results包含属性等于John的对象(人)。设置谓词等于将WHERE子句放在SQL语句中。

如果要设置联接,视图等,您需要在实体之间执行正确的NSPredicates(基于关系和属性),并让Core Data为您执行行内容。

如果您需要删除对象,则需要执行以下操作:

[moc deleteObject:managedObjectToDelete];

如果您需要更新托管对象,则必须创建一个获取请求并检索您正在查找的对象(例如,您可以为每个对象提供一个特定的ID并设置一个id为您的谓词想)。如果获取请求检索某些对象,则可以更新它们。

这些是指导您使用Core Data的简单提示。我建议你阅读Core Data Programming Guide。那里你可以找到很多东西。如果您愿意,可以从使用Core Data的好教程开始,查看www.raywenderlich.com

如果你想要别的东西让我知道。

希望它有所帮助。