2011-11-12 58 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