2011-11-12 25 views
4

我有一个整数名为大理石,并正尝试使用下面的代码,将其保存到一个数组:整型NSInteger的并保存到核心数据

[records setValue:marbles forKey:@"marbles"]; 

有了这个代码,我得到警告:

警告:语义问题:指针转换不兼容的整数将'int'发送到类型为'id'的参数

那么,如何设置NSInteger的值。

Next问题,如何将数组重新上传到核心数据?我获取数组,进行更改,以及如何将这些更改应用到Core Data?

感谢

回答

14

与整数初始化一个NSNumber(这是什么CoreData期待):

NSNumber *marbleNumber = [NSNumber numberWithInt:marbles]; 
[records setObject:marbleNumber [email protected]"marbles"]; 

或者:

[records setMarbles:[NSNumber numberWithInt:marbles]]; 

要保留更改,您保存方面:

NSError *error; 
[myManagedObjectContext save:&error]; 

//handle your error 
6

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]; 

我会建议在地方(ID)值的考虑看看Core Data programming guide

0
- (id)primitiveValueForKey:(NSString *)key;  
- (void)setPrimitiveValue:(id)value forKey:(NSString *)key; 

使用的NSNumber