0

Q&A やこれに役立つものが見つからないようですが、見つけた場合は自由にリンクしてください。Core Data エンティティからデータを抽出し、setPropertiesToFetch を使用して「行番号」のリストを抽出しました。今私が欲しいのは、nil として設定されている行番号を取得し、それらを 0 に変更することです。

問題 1) 「インスタンス 0x59ef30 に送信された認識されないセレクター」。このエラーは、他の人をコメントアウトすることで「if」行から発生していることはわかっていますが、何が原因なのかわかりません!

問題 2) カウントを増やした後にやりたいことをもう一度実行して、次のオブジェクトをチェックしますが、これを行うのに最適なコードについて本当に確信が持てません。メソッド/コードスニペット/チュートリアルの提案は素敵です!

これがコードです(上記のフェッチリクエストはうまく機能します:))

changeTo0 = [[context executeFetchRequest:fetchRequest error:&error] mutableCopy];
NSLog(@"What is even in this array anyway? %@", changeTo0);
[fetchRequest release];

NSLog(@"In the array there is %u records", [changeTo0 count]);

NSInteger count = 0;
Fsode *details = [changeTo0 objectAtIndex:count];
NSLog(@"In details we have %@", details);        

if ([details lineNumber] == nil){
   [details setValue:0 forKey:@"lineNumber"];
   ++count
   NSLog(@"HERE");
}
4

1 に答える 1

4

最初の質問については、エラー (Phillip Mills のコメントを参照) とモデルについて説明する必要があります。Fsodeエンティティには というプロパティがありますlineNumberか? 何型ですか?

2 番目の質問については、次のようなリクエストを 1 回だけ実行します。

NSArray* results = [context executeFetchRequest:fetchRequest error:&error];
NSLog(@"What is even in this array anyway? %@", results);

int count = 1;
for(NSManagedObject* obj in results) {

    // I suppose lineNumber is of type NSNumber
    int numberValue = [[obj valueForKey:@"lineNumber"] intValue];    
    if(numberValue == 0) {

        [obj setValue:[NSNumber numberWithInt:count] forKey:@"lineNumber"];
        count++;
    }
}    

[fetchRequest release];

// do a save here...

PSあなたのコードを読んで、2番目の質問についてはわかりません。あなたが達成したいことを自由に説明してください。

lineNumber私が使用したコードは、行番号がゼロのオブジェクトごとにインクリメントします。したがって、最初のオブジェクトは 1、2 番目のオブジェクトは 2 というようになります。これらのオブジェクトに一定の行番号を付けたい場合は、置き換えます

[obj setValue:[NSNumber numberWithInt:count] forKey:@"lineNumber"];

[obj setValue:[NSNumber numberWithInt:1] forKey:@"lineNumber"];を削除しcountます(コードと同じです)。

于 2012-09-26T11:29:00.007 に答える