整数到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)值