2010-05-20 2 views
0

Хорошо, после того как я столкнулся с тупиком, модифицирующим существующий пример Apple для CoreData, я начал полностью новый, создав свой собственный проект, и это сработало нормально ..... пока я не попытался получить доступ к связанному объекту.Как получить адрес объекта связанного объекта с CoreData?

Так вот что я сделал.

Я создал 2 сущности, где одна только подробная информация другой, поэтому существует одно-два отношения.

Entity # 1, Фондовый рынок:

  • имя
  • значение
  • детали -> отношения к Entity # 2

Entity # 2, StockDetails:

  • Банк
  • опубликовал
  • акции -> отношения к Entity # 1

Теперь, я создал «класс управляемых объектов» для обоих субъектов.

Затем я создал несколько строк, чтобы поместить некоторые данные в него

NSManagedObjectContext *context = [self managedObjectContext]; 

Stocks *stockinfo= [NSEntityDescription 
    insertNewObjectForEntityForName:@"Stocks" 
    inManagedObjectContext:context]; 
stockinfo.name = @"Apple"; 
stockinfo.value = [NSNumber numberWithInt:200]; 


StockDetails *thestockdetails = [NSEntityDescription 
    insertNewObjectForEntityForName:@"StockDetails" 
    inManagedObjectContext:context]; 

thestockdetails.bank = @"Bank of America"; 
thestockdetails.published = [NSDate date]; 
thestockdetails.stock = stocks_; 

stockinfo.details = thestockdetails ; 

NSError *error; 
if (![context save:&error]) 
{ 
    NSLog(@"A Problem occured, couldn't save: %@", [error localizedDescription]); 
} 

Просто хочу упомянуть, что я не получаю сообщение об ошибке с этим.

Далее я поместил все в UITableViewController для предварительного просмотра, а другой для подробного просмотра. В предварительном просмотре отображается только информация об объекте # 1 (запасы), и при его выборе отображается подробный вид.

Теперь здесь также отображается информация об объекте Entity # 1 (Stocks), но я хочу также показать Entity # 2 (StockDetails).

Это, как я пытаюсь получить доступ к данным:

StockDetails *details_ = [stockinfo details]; 

И это дает мне EXC_BAD_ACCESS.

Значит, любая идея, что я делаю неправильно здесь?

Благодаря

ответ

1

Там нет ничего плохого с

StockDetails *details_ = [stockinfo details]; 

Вы должны смотреть, если вы случайно не выпустить детали или фондово где-то. Поскольку у вас это есть в UITableViewController, объект может использоваться для каждой строки/раздела.

+0

Хорошо, глупо мне. Я действительно выпустил детали в методе cellForRowAtIndexPath. Спасибо, что указали, что я всегда смотрел на звонок. – eemceebee

0

Для связи один-к-одному, это должно работать:

StockDetails *details = [stockinfo valueForKey:@"details"]; 
+0

такой же результат :(Я все еще получаю ошибку – eemceebee

Смежные вопросы