У меня есть представление, которое будет использоваться в каждой из моих элементов CollectionView. У меня есть IBOutlet для CollectionViewItem из моего представления, и я подключился к нему в Interface Builder. Я хочу получить доступ к значению из объекта createdObject (который является объектом Core Data) в моем коде представления. Вот пример того, что я пытаюсь сделать - доступ к значениям последовательности из representedObject:Как получить представленный объект из представления в NSCollectionViewItem?
В файле .h:
IBOutlet NSCollectionViewItem *item; // Connected in IB
В файле .m
NSString *seq = [[item representedObject] valueForKey:@"seq"];
NSLog(@"Seq: %@", seq); // returns Seq: (null)
Я знаю, что seq заселен, потому что я привязал его к метке в представлении CollectionViewItem в IB, используя ключевой путь presentObject.seq, и это работает.
Любая идея, почему, когда я пытаюсь получить доступ к значению для seq в коде для представления, он возвращает null?
Спасибо, что сделал трюк. – Austin
Я озадачен этим ответом. Во-первых, @kperryua утверждает: «Типичный шаблон для доступа к экземпляру NSCollectionViewItem - это привязка к прототипу. Вы упоминаете, что вы сделали это и что он работает». Но в вопросе Остина только упоминается использование «ключевого пути presentObject.seq», и действительно трудно понять, как привязать элемент ItemPrototype элемента collectionView к представлению коллекцииViewItem. Я говорю, что это невозможно, но я счастлив, что оказался ошибочным. Во-вторых, документация Apple для копии NSObjectWithZone: явно указывает: «Вы не должны переопределять этот метод». –
Переопределение copyWithZone: вполне безопасно, пока суперклассы allocWithZone: вызывается внутри него. Не проверял, действительно ли они говорят, что не делают этого, но почему-то я думаю, что вы можете смутить его с allocWithZone: или некоторые из них. – ctpenrose