整数到NSInteger并保存到核心数据
我有一个整数名为弹珠,并试图使用下面的代码将其保存到数组中:
[records setValue:marbles forKey:@"marbles"];
有了这个代码,我得到了警告:
警告:语义问题:指针转换不兼容的整数发送'int'到types'id'的参数
那么,如何设置NSInteger的值。
下一个问题,如何重新将数组上传到核心数据? 我获取数组,进行更改,以及如何将这些更改应用到Core Data?
谢谢
用你的整数初始化一个NSNumber(这是CoreData期望的):
NSNumber *marbleNumber = [NSNumber numberWithInt:marbles]; [records setObject:marbleNumber forKey@"marbles"];
要么:
[records setMarbles:[NSNumber numberWithInt:marbles]];
要保留更改,请保存您的上下文:
NSError *error; [myManagedObjectContext save:&error]; //handle your error
NSArrays将只采取对象,所以第一步是使用这种方法把你的NSInteger变成一个NSNumber:
+ (NSNumber *)numberWithInt:(int)value
所以:
NSNumber *myNumber = [NSNumber numberWithInt:marbles];
然后你可以这样做:
[records setValue:myNumber forKey:@"marbles"];
基本上,一旦你获取数据,你得到一个managedObjectContext,把它想象成一个绘图板,以及任何改变(包括增加或删除新的对象),你对这个对象可能会被保存到CoreData使用这样的东西:
NSError *error; if (![context save:&error]) { // Update to handle the error appropriately. NSLog(@"Unresolved error %@, %@", error, [error userInfo]); exit(-1); // Fail }
上下文是你使用NSFetchedResultsController得到的上下文。 你可以这样得到:
NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
我会build议看看核心数据编程指南
- (id)primitiveValueForKey:(NSString *)key; - (void)setPrimitiveValue:(id)value forKey:(NSString *)key;
使用NSNumber代替(id)值