I have a integer named marbles, and am trying to save it into an array using the following code:
[records setValue:marbles forKey:@\"marbles\"];
NSArrays will only take objects, so the first step is to turn your NSInteger into a NSNumber using this method:
+ (NSNumber *)numberWithInt:(int)value
so:
NSNumber *myNumber = [NSNumber numberWithInt:marbles];
and then you can do:
[records setValue:myNumber forKey:@"marbles"];
Basically once you fetch the data, you get a managedObjectContext, think of it as a drawing board, and any changes (including adding or deleting new objects), you make to this objects may be saved again to CoreData using something like this:
NSError *error;
if (![context save:&error]) {
// Update to handle the error appropriately.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
exit(-1); // Fail
}
Where context is the context you would get with your NSFetchedResultsController. Which you can get like this:
NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
I would recommend taking a look at the Core Data programming guide
- (id)primitiveValueForKey:(NSString *)key;
- (void)setPrimitiveValue:(id)value forKey:(NSString *)key;
use NSNumber in place of (id)value
Initialize an NSNumber (which is what CoreData is expecting) with your integer:
NSNumber *marbleNumber = [NSNumber numberWithInt:marbles];
[records setObject:marbleNumber forKey@"marbles"];
Or:
[records setMarbles:[NSNumber numberWithInt:marbles]];
To persist your changes, you save your context:
NSError *error;
[myManagedObjectContext save:&error];
//handle your error