Iphone 整数到NSInteger并保存到核心数据

Iphone 整数到NSInteger并保存到核心数据,iphone,objective-c,ios,xcode,core-data,Iphone,Objective C,Ios,Xcode,Core Data,我有一个名为marbles的整数,正在尝试使用以下代码将其保存到数组中: [records setValue:marbles forKey:@"marbles"]; 使用此代码,我得到警告: 警告:语义问题:不兼容的整数到指针转换将“int”发送到“id”类型的参数 那么,如何设置NSInteger的值呢 下一个问题,如何将阵列重新上传到核心数据中?我获取阵列,进行更改,如何将这些更改应用回核心数据 谢谢使用整数初始化NSNumber(这是CoreData所期望的): NSNumber *ma

我有一个名为marbles的整数,正在尝试使用以下代码将其保存到数组中:

[records setValue:marbles forKey:@"marbles"];
使用此代码,我得到警告:

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

那么,如何设置NSInteger的值呢

下一个问题,如何将阵列重新上传到核心数据中?我获取阵列,进行更改,如何将这些更改应用回核心数据

谢谢

使用整数初始化NSNumber(这是CoreData所期望的):

NSNumber *marbleNumber = [NSNumber numberWithInt:marbles];
[records setObject:marbleNumber forKey@"marbles"];
或:

要保留更改,请保存上下文:

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

//handle your error

NSArray只接受对象,因此第一步是使用以下方法将NSInteger转换为NSNumber:

+ (NSNumber *)numberWithInt:(int)value
因此:

然后你可以做:

[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
        }
NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
其中context是使用NSFetchedResultsController可以获得的上下文。你可以这样得到:

NSError *error;
        if (![context save:&error]) {
            // Update to handle the error appropriately.
            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            exit(-1);  // Fail
        }
NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
我建议你看看

使用NSNumber代替(id)值

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