整数をNSIntegerに変換し、コアデータに保存する

私はmarblesという名前の整数を持っており、次のコードを使って配列に保存しようとしています:

[records setValue:marbles forKey:@"marbles"];

このコードでは、警告が表示されます。

警告:セマンティック問題:互換性のない整数からポインタへの変換 'int'を 'id'型のパラメータに送信する

だから、どのようにNSIntegerの値を設定しますか?

次の質問、どのようにコアデータに配列を再アップロードするのですか?配列をフェッチして変更を加え、それらの変更をコアデータにどのように適用すればよいですか?

ありがとう

4

3 答え

整数で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
14
追加された

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];

I would recommend taking a look at the Core Data programming guide

6
追加された
- (id)primitiveValueForKey:(NSString *)key;    
- (void)setPrimitiveValue:(id)value forKey:(NSString *)key;

(id)の値の代わりにNSNumberを使う

0
追加された