我在我的模型中创建了两个对象,即帐户和朋友 - 其中1个帐户将有很多朋友。我也在代码中创建了这两个对象。
我正在使用UITableView来显示我的帐户(一切正常),并使用新的UIViewController添加新记录。在新记录中,我添加了帐户详细信息,并从API中获取了朋友。当从UITableView转到新的UIViewController时,我创建了一个空的Account对象:UIViewController.account = account;
现在是棘手的部分。保存此数据时,我正在执行以下操作:
// Configure the new account with information from the form.
[account setUsername:[profileDict objectForKey:@"the_name"]];
[account setPassword:password.text]; // from formfield
[account setCreationDate:[NSDate date]];
// Commit the change.
NSError *error;
if (![account.managedObjectContext save:&error]) {
// Handle the error.
NSLog(@"save error");
}
NSManagedObjectContext *context = [account managedObjectContext];
for(NSArray *names in usernameArray) //usernameArray holds my Friends
{
friend = [NSEntityDescription insertNewObjectForEntityForName:@"Friend" inManagedObjectContext:context];
[account addReplyAccountsObject:friend];
[friend setName:[names objectAtIndex:0]];
[friend setPicUrl:[names objectAtIndex:1]];
// Commit the change.
NSError *error;
if (![context save:&error]) {
// Handle the error.
NSLog(@"save error");
}
}
现在这似乎有效 - 但有时我的应用程序崩溃时出现总线错误 - 通常是在设备而不是模拟器上。这是一次保存帐户和许多朋友的正确方法吗?另外 - 我得到公共汽车错误的任何原因?这似乎发生在有很多朋友的时候......
答案 0 :(得分:1)
我认为该行存在错误:
friend = [NSEntityDescription insertNewOb...
您需要声明变量的类型:
Friend *friend = [NSEntityDescription insertNewObj...
(假设您的朋友类名为Friend
。)
另外,我不会每次在循环周围提交更改。进行更改,然后,当您完成后,提交它们:
for(NSArray *names in usernameArray) //usernameArray holds my Friends
{
// ...
}
// Commit the change.
NSError *error;
if (![context save:&error]) {
// Handle the error.
NSLog(@"save error");
}