2014-04-27 3 views
0

Немного странного вопроса, надеюсь, я могу это объяснить. Я добавление объектов в методе с помощью:Основные данные - Segue не работает, если не вставить новый объект

Objects *object = [NSEntityDescription insertNewObjectForEntityForName:@"Objects" inManagedObjectContext:self.managedObjectContext]]; 
object.name = @"Whatever"; 

Когда я пытаюсь отправить его через к ViewController (чтобы загрузить в таблицу) с:

ViewController *vc = [segue destinationViewController]; 
vc.managedObjectContext = self.managedObjectContext; 

в методе prepareForSegue, то только так, как это работает, если я добавлю:

Objects *object = [NSEntityDescription insertNewObjectForEntityForName:@"Objects" inManangedObjectContext:vc.managedObjectContext]; 

в конце. Так что я должен добавить новую запись в segue для всего, чтобы отправить без ошибок?

Ошибка без этой линии:

NSRangeException', reason: [_PFBatchFaultingArray objectAtIndex:]: index(1) beyond bounds (1) 

Всей помощи ценится :)

+0

Не похоже, что вы передаете объект, но вместо этого передаете контекст управляемого объекта. Как вы пытаетесь получить объект из этого moc в новом контроллере представления? – Abizern

+0

Как создается контекст управляемого объекта? Разделяется ли это между несколькими вещами? Используется ли ограничение по контенту или закрытие очереди? Как контроллер дочернего представления получает объекты/объект из контекста? – quellish

ответ

2

Попробуйте добавить общедоступное свойство к вашему контроллеру вида принимающема ...

В ViewController.h

#import "Objects.h" 

и

@property (nonatomic, strong) Objects *receivingObject; 

Затем в методе prepareForSegue включить эту строку ...

vc.receivingObject = object; 

UPDATE: с благодарностью к Hal Mueller

Удалить строку кода ...

vc.managedObjectContext = self.managedObjectContext; 

В случае, если вам нужно получить NSManagedObjectContext в контроллере вида назначения, вы можете использовать эту строку коды ...

NSManagedObjectContext *context = self.receivingObject.managedObjectContext; 

Надеется, что это помогает.

+1

Помните, что вы не попадаете в ловушку публичных свойств как для объекта, так и для MOC. Экземпляр объекта, с которым работает ваш VC, знает свой Контекст управляемого объекта. Когда вы изменяете @ andrewbuilder, удалите свойство .managedObjectContext в VC. –

+0

Он по-прежнему дает ошибку: + entityForName: nil не является законным NSManagedObjectContext и т. Д., Но это отличный момент для меня. Большое вам спасибо :) – Julia

+0

Рад помочь. Приятно видеть, что вы пытаетесь самостоятельно справиться с этим. Если вы застряли, возможно, стоит начать новый вопрос и предоставить немного больше информации о том, как устанавливаются ваши контроллеры представлений - например, у вас есть контроллер табличного представления (например, мастер) и отправляет объект «Объекты» 'к контроллеру вида (например, детали), и хотелось бы достичь ... и т. д. Удачи. – andrewbuilder

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