当我尝试将一个整数值打印到从NSManagedObject检索到的控制台时,它将显示6或8位数字的值(对象ID?)。但是,如果我使用调试器,则“打印到控制台的描述”将显示为我期望的一位数字值。

例如,我将对象“序列”分配给NSInteger,然后使用NSLog格式字符串显示:

MyProcess *myProcess = [array objectAtIndex:i];
NSInteger sequence = [[NSNumber numberWithInteger:(NSInteger)myProcess.sequence] intValue];
NSLog(@"sequence = %d",myProcess.sequence);

控制台输出为:
2009-10-06 16:11:05.871 MyProcess[33185:20b] sequence = 565256

但是,当我从调试器尝试“打印到控制台”时,我看到了值1:
<MyStoryImage: 0x3f59a80> (entity: MyObject; id: 0x3f2d540 <x-coredata://FF21959A-  4B67-4587-A25F-66A7B8139DFA/MyProcess/p2> ; data: {
sequence = 1;
<x-coredata://FF21959A-4B67-4587-A25F-66A7B8139DFA/MyProcess/p1>;
})

感谢您的帮助!

最佳答案

我认为您从NSManagedObject获得的将是一个NSNumber。
可以很容易地打印出:

MyProcess *myProcess = [array objectAtIndex:i];
NSLog(@"sequence = %@", myProcess.sequence);

或者,如果您确实需要NSInteger:
MyProcess *myProcess = [array objectAtIndex:i];
NSLog(@"sequence = %i", [myProcess.sequence integerValue]);

我认为在这段代码中
NSInteger sequence = [[NSNumber numberWithInteger:(NSInteger)myProcess.sequence] intValue];

(NSInteger)myProcess.sequence实际上获得了NSNumber的内存地址。您不能只将NSNumber转换为NSInteger。

关于objective-c - 如何使用NSLog从NSManagedObject打印NSInteger值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1528670/

10-13 01:08