如何使用NSLog从NSManagedObject打印NSInteger值

dfd*_*esq 8 iphone objective-c

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

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

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

控制台输出是:

2009-10-06 16:11:05.871 MyProcess[33185:20b] sequence = 565256
Run Code Online (Sandbox Code Playgroud)

但是当我从调试器尝试"打印到控制台"时,我看到值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>;
})
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助!

Tho*_*ler 12

我认为你从NSManagedObject获得的将是一个NSNumber.打印很容易:

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

或者,如果你真的需要NSInteger:

MyProcess *myProcess = [array objectAtIndex:i];
NSLog(@"sequence = %i", [myProcess.sequence integerValue]);
Run Code Online (Sandbox Code Playgroud)

我认为在这段代码中

NSInteger sequence = [[NSNumber numberWithInteger:(NSInteger)myProcess.sequence] intValue];
Run Code Online (Sandbox Code Playgroud)

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