小编Dal*_*apa的帖子

iOS 5 NSNumber Bug

这个虫子我会变得疯狂!我有这段代码在iOS 4.3上运行良好

newRegistered.ticket_id = [NSNumber numberWithInt:
[curRegistered objectForKey:@"ticket_id"] intValue]];
Run Code Online (Sandbox Code Playgroud)

如果我做 :

NSLog(@"ID before : %d, ID after : %d",
[curRegistered objectForKey:@"ticket_id"] intValue], [newRegistered.ticket_id intValue]);
Run Code Online (Sandbox Code Playgroud)

我在iOS 4.3上:

ID之前:35459,ID之后:35459

在iOS 5.0上:

ID之前:35459,ID之后:-30077

请帮忙 !谢谢你提前.

##编辑:## 我已经调查了一下这个问题.似乎问题来自于在CoreData中分配NSNumber.我应该指定上面的代码段与CoreData一起使用(newRegistered是一个NSManagedObject,而curRegistered是一个包含JSON数据的NSDictionary(只有字符串,永远不是int或long ...)).

这是具体问题:

long long test = 789654;

Registereds *a = [NSEntityDescription insertNewObjectForEntityForName:@"Registereds" inManagedObjectContext:self.managedObjectContext];
a.ticket_id = [NSNumber numberWithLongLong:test];
NSLog(@"%lld -> %@", test, a.ticket_id); // Displays 789654 -> 3222 on iOS 5 and 789654 -> 789654 on iOS 4.3

NSNumber *ticket_id = [NSNumber numberWithLongLong:test];
NSLog(@"%lld -> %@", test, …
Run Code Online (Sandbox Code Playgroud)

iphone nsnumber ios

3
推荐指数
1
解决办法
818
查看次数

标签 统计

ios ×1

iphone ×1

nsnumber ×1