2011-04-21 2 views
0

Это очень простой вопрос, но я изо всех сил пытаюсь найти ответ. У меня есть NSManagedObject под названием iSelectedObject.Самый простой способ получить NSArray для NSManagedObject

Предположив У меня есть условие позже, что тянет либо representedObject из NSOutlineView или selectedObjects из NSArrayController, в зависимости от (не имеет отношения к этому вопросу) критерии, я тогда нужно запустить метод, который требует NSManagedObject, подаваемого в него , Это отлично работает, когда я кормлю его representedObject от NSOutlineView - это естественно NSManagedObject, когда выбрано таким образом. Однако, если я захватил selectedObjects моего NSArrayController, это NSArray, и я не могу его подавать в свой метод.

Я знаю, что NSArray может содержать NSManagedObjects и почувствовать решение может быть так просто, как собирается один уровень глубже в мою NSArray или что-то подобное, но как бы я кормлю NSArray моего метода, который требует и NSManagedObject. Должен ли я каким-то образом его извлечь или преобразовать?

(В качестве помощи: Причина, по которой я даже пытался подавать метод NSArray, состоит в том, что он и альтернатива NSManagedObject имеют одинаковые данные, содержащиеся внутри, т. Е. Если я выполняю две функции точно так же, один ожидал NSArray и один ожидал NSManagedObject, они работают отлично. Единственная причина, по которой у меня есть отдельный выбор: NSArray или NSManagedObject - это потому, что по умолчанию это selectedObjects и representedObject. Если бы я мог вытащить один или другой для обоих, это было бы идеальным решением, но я не уверен, как это сделать.)

+0

Так что же делает этот таинственный метод, который работает как на массиве, так и на одном объекте? Если вы укажете нам код, было бы намного легче понять проблему, с которой вы сталкиваетесь. Если не имеет значения, какой тип вы передаете методу, вы можете просто объявить аргумент как тип 'id', и все готово. –

+0

Ага! Я думаю, что 'id' вполне может сделать трюк! Благодаря! Я слишком спешил и избегал «id» так долго, что даже не думал об использовании этого здесь. – biscuitstack

ответ

0

Мне удалось изменить метод, чтобы ожидать тип id, а не NSManagedObject, и это остановило его жалобы.

1

Если NSArray только cont AINS один объект, вы можете просто вытащить NSManagedObject из NSArray с

[array lastObject]; 

Если есть несколько объектов, проходят через массив и проверить каждый объект с

[object isKindOfClass:[NSManagedObject class]]; 

В любом случае, это даст вы NSManagedObject, который вы можете использовать для своего метода.

+0

Спасибо. Не применимо к этой конкретной ситуации, но обычно это было бы, и это хороший ответ. – biscuitstack

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

  • Нет связанных вопросов^_^