Я создал два объекта в моей модели, учетной записи и другом - где 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");
}
}
Теперь это похоже на работу - однако иногда мое приложение вылетает с ошибкой шины - обычно на устройстве, а не на тренажере. Это правильный способ сохранить учетную запись и много друзей сразу? Также - по какой-то причине, я бы получил ошибку шины? Это, кажется, происходит, когда есть много друзей ....
Друг объявляется в моем файле .h в качестве друга * друга. – mootymoots
Если вы вставляете новые объекты-знакомые в такой цикл, то это очень плохая идея объявить его в заголовке. Вы должны использовать локальную переменную, так как иначе 'friend' будет ссылаться только на последний введенный объект. Не говоря уже о том, что вы ссылаетесь на временные данные без необходимости. –
@mootymoots: Просто из интереса, сделал ли код фиксации из цикла исправить ошибку? Кроме того, как комментирует @Marcus S. Zarra, установка одной и той же переменной экземпляра снова и снова является плохой идеей - вместо этого используйте локальную переменную. –