我有一個整數名爲大理石,並正嘗試使用下面的代碼,將其保存到一個數組:整型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