Objective c 当参数为';t零?

Objective c 当参数为';t零?,objective-c,ios4,Objective C,Ios4,我的CoreData包装器类中出现了一些奇怪的行为。下面是函数: -(SystemCode*) getSystemCodeWithDescription:(NSString*)description andType:(Class)type { NSString* entityName = [NSString stringWithFormat:@"%@", type]; // NSStringFromClass(type); was my first try, it also r

我的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模拟器中运行,如果需要的话。

尝试使用
中的

你确定
类型
类吗


另外,您可以使用
po
而不是
print object

我解决了这个问题。该类工作正常,有人签入了一个生成目标以进行优化的调试。只是gdb看不到这些值。我的bug实际上在谓词中,这就是为什么没有选择任何实体。

为了澄清:对象“类型”引用的类称为Result,它继承自SystemCode。而
SystemCode
最终继承自
NSObject
,对吗,从NSManagedObjectIt继承的SystemCode看起来您的问题是
stringWithFormat:
返回nil。提供其他参数作为第二个参数(例如,
[NSString stringWithFormat:@“%@”,“TEST”]
)有效吗?Chuck:是的,stringWithFormat仍能正常工作,这没有帮助
NSStringFromClass()
只是该函数的包装器。这个想法不错,但不幸的是,yes类型是一个类。我运行了一些测试代码SystemCode*test=[typealloc];NSLog(@“测试类型:%@,[测试类]);然后打印出“测试类型:结果”好吧,这真的很奇怪。尝试
NSLog(@“%p%@”,类型,类型)。Hrm——如果这是一个实体的类,它可能是动态定义的,可能会跳到NSStringFromClass(),但我无法想象这是真的。日志会显示:“0x5a2a8,Result”,但NSStringFromClass当然仍然返回nil。您能检查VM工具中的区域吗?查看0x5a2a8是否位于malloc区域或映射内存中?我怀疑它是一个动态生成的类,但NSStringFromClass()不应该被它绊倒。您有该类的
@接口吗?也就是说,它不是由核心数据动态定义为模型的一部分吗?好的——然后还有更奇怪的事情发生了(是的,动态类将完全在运行时构建,核心数据可以做到这一点)。提交一个bug并附加二进制文件。这很奇怪。如果你能最小化测试用例,那就更好了。