NSStringFromClass может вернуть ноль, если аргумент не ноль? - PullRequest
0 голосов
/ 05 июня 2011

Я получаю странное поведение в своем классе оболочки CoreData. Вот функция:

-(SystemCode*) getSystemCodeWithDescription:(NSString*)description andType:(Class)type {
    NSString* entityName = [NSString stringWithFormat:@"%@", type]; 
    // NSStringFromClass(type); was my first try, it also returned a nil string
    SystemCode* result = [self getUniqueEntity:entityName predicate:@"Description == '%@'" predicateArg:description generateNew:NO];
    return result;
}

Если я ставлю точку останова на 2-й строке (SystemCode * result = ...) и запускаю GDB, я получаю следующий вывод:

(gdb) print-object entityName
Unable to access variable "entityName"
Can't print the description of a NIL object.
(gdb) print-object type
Result

Как 'type' может быть допустимым объектом, но когда я пытаюсь преобразовать его в строку, он просто превращается в ноль строку? Мой проект использует XCode 4.0 и работает в симуляторе iPad 4.3, если это имеет значение.

Ответы [ 3 ]

1 голос
/ 05 июня 2011

Вы уверены, что type является Class?

Кроме того, вы можете использовать po вместо print-object.

1 голос
/ 08 июня 2011

Я разобрался в проблеме.Класс работал правильно, кто-то зарегистрировал цель сборки для отладки, которая была оптимизирована.Просто GDB не мог видеть значения.Моя ошибка была фактически в предикате, поэтому никакие объекты не были выбраны.

0 голосов
/ 05 июня 2011

Попробуйте использовать class_getName из <objc/runtime.h>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...