我是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?
答案 0 :(得分:2)
首先,您必须创建已创建的Coredata数据库。接下来在coredata模型中选择Entity面板中的表。右击项目hirarchy树中的模型。选择新文件,选择coredata和NSManagedObjectSubclass并保存。它为coredata表创建模型类,您可以在方法中使用它。
此图显示了选择db和table以右键单击并选择NSManagedObjectSubClass
此图像显示选择的第一个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。
如果你想要别的东西让我知道。
希望它有所帮助。