我有一个整数名为大理石,并正尝试使用下面的代码,将其保存到一个数组:整型NSInteger的并保存到核心数据
[records setValue:marbles forKey:@"marbles"];
有了这个代码,我得到警告:
警告:语义问题:指针转换不兼容的整数将'int'发送到类型为'id'的参数
那么,如何设置NSInteger的值。
Next问题,如何将数组重新上传到核心数据?我获取数组,进行更改,以及如何将这些更改应用到Core Data?
感谢
我有一个整数名为大理石,并正尝试使用下面的代码,将其保存到一个数组:整型NSInteger的并保存到核心数据
[records setValue:marbles forKey:@"marbles"];
有了这个代码,我得到警告:
警告:语义问题:指针转换不兼容的整数将'int'发送到类型为'id'的参数
那么,如何设置NSInteger的值。
Next问题,如何将数组重新上传到核心数据?我获取数组,进行更改,以及如何将这些更改应用到Core Data?
感谢
与整数初始化一个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
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
- (id)primitiveValueForKey:(NSString *)key;
- (void)setPrimitiveValue:(id)value forKey:(NSString *)key;
使用的NSNumber