Попытка распознать _NSFaultingMutableSet как члена NSSet - PullRequest
0 голосов
/ 28 мая 2010

Я пытаюсь распознать результат общего запроса к управляемому объекту как NSSet. В настоящее время возвращаемый класс является членом _NSFaultingMutableSet, который явно связан, но не выполняет вызовы isMemberOf: [NSSet class] и isKindOf: [NSSet class].

Учитывая, что Какао не выполняет прямую реализацию NSSet, неудивительно, что у меня есть немного воздуха в трубах, но мне интересно, если я что-то испортил, или это требует более высокого уровня кунг-фу, чем я обладаю.

Код следует:

SEL selector = NSSelectorFromString(someString);
 if(![self respondsToSelector:selector]){
  NSLog(@"Error processing item");
                return;
 }
 id items = [self performSelector:selector];
 Class itemsClass = [items class];
 if ( [itemsClass isKindOfClass:[NSSet class]]) {
      // do something
        }

Ответы [ 2 ]

1 голос
/ 28 мая 2010

Ха! Моя проблема, как обычно, была решена RTFM. Оказывается, если вы НЕ должны вызывать isKindOf: для самого класса, как я, а скорее для конкретного экземпляра. Тск тск.

0 голосов
/ 28 мая 2010

В качестве альтернативы, NSObject имеет метод класса isSubclassOfClass: (представлен в Mac OS X 10.2). Вы могли бы сделать:

if ([itemsClass isSubclassOfClass:[NSSet class]])
{
    // do something
}

Хотя, возможно, проще просто протестировать сам экземпляр.

...