我在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;
}
如果我在第二行(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'成为一个有效的对象,但当我尝试将其转换为字符串时,它只是转为一个nil字符串?我的项目是使用XCode 4.0并在iPad 4.3模拟器中运行,如果这很重要。
答案 0 :(得分:1)
您确定type
是Class
吗?
此外,您可以使用po
代替print-object
。
答案 1 :(得分:1)
我想出了这个问题。该类工作正常,有人在构建目标中检查了优化的调试。只是gdb无法看到这些值。我的错误实际上是在谓词中,这就是没有选择实体的原因。
答案 2 :(得分:0)
尝试使用class_getName
中的<objc/runtime.h>
。