NSDictionary* ordersTableRow = arrayOfDictionaries[i];
NSMutableDictionary* ordersTemp = [[NSMutableDictionary alloc] initWithDictionary:ordersTableRow];
[ordersTemp removeObjectForKey:@"_id"];
NSNumber *myCHICNumber = [ordersTableRow objectForKey:@"chicnumber"];
NSLog(@"myCHICNumber = %@", myCHICNumber);
[ordersTemp removeObjectForKey:@"chicnumber"];
[ordersTemp setObject:myCHICNumber forKey:@"chicnumber"];
[ordersTemp setObject:[ordersTableRow objectForKey:@"_id"] forKey:@"rowindex"];
NSLog(@"chicnumber for OrderDetails = %@", [ordersTableRow objectForKey:@"chicnumber"]);
[ordersRecord setValuesForKeysWithDictionary:ordersTemp];
NSLog(@"chicnumber for OrderDetails = %@", [ordersTableRow objectForKey:@"chicnumber"]);
NSLog(@"chicnumber for OrdersRecord = %@", [ordersRecord valueForKey:@"chicnumber"]);
[ordersRecord setValue:myCHICNumber forKey:@"chicnumber"];
NSLog(@"chicnumber for OrdersRecord = %@", [ordersRecord valueForKey:@"chicnumber"]);
Yields :
2014-03-27 09:20:57.227 [2269:3107] myCHICNumber = 2013037
2014-03-27 09:20:57.227 [2269:3107] chicnumber for OrderDetails = 2013037
2014-03-27 09:21:08.243 [2269:3107] chicnumber for OrderDetails = 2013037
2014-03-27 09:21:13.283 [2269:3107] chicnumber for OrdersRecord = -18579
2014-03-27 09:21:47.459 [2269:3107] chicnumber for OrdersRecord = -18579
NSManagedObject defined :
@property (nonatomic, retain) NSNumber * orderid;
@property (nonatomic, retain) NSString * productid;
@property (nonatomic, retain) NSNumber * quantity;
@property (nonatomic, retain) NSString * colourcode;
@property (nonatomic, retain) NSString * notes;
@property (nonatomic, retain) NSNumber * chicnumber;
@property (nonatomic, retain) NSString * colourname;
@property (nonatomic, retain) NSNumber * rowindex;
所以:只要我将NSNumber chicnumber放入NSManagedObject,无论是通过setValuesForKeysWithDictionary,还是通过setValue:forKey专门设置值:NSNumber从2013037变为-18579。
答案 0 :(得分:2)
看起来chicnumber
被配置为"整数16"在核心数据模型中。但是您要分配2013037
的值,这需要超过16位。执行此操作时,该值已损坏,并且您最终得到的值不正确。
在数据模型中使用更大的整数类型。此样本值将适合32位整数。是否需要64位取决于chicnumber
可能获得的其他值。