0

これは、値を取得したい配列のサンプルです。

coursesArray = [[NSMutableArray alloc]init];

// AR111:
[coursesArray addObject:[[NSMutableDictionary alloc] initWithObjectsAndKeys:
                           @"MUR",@"courseType",  
                           @"AR111",@"courseCode",
                           @"Arabic Communication Skills (I)",@"courseName",
                           @"3",@"creditHours",
                           @"",@"preRequisites",
                           @"63.000",@"coursePrice",
                           @"6.000",@"courseEPP",
                           @"This course aims at .",@"courseDetails",
                           nil]];

そして、これはそれに価値をもたらすための私のコードです。

NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];

int i = 0;
for (i = 0; i < [coursesArray count] ; i++) {

NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];

    [newManagedObject setValue:[[coursesArray objectAtIndex: i ]forKey:@"courseName"] forKey:@"courseName"];
}

誰かが私が次の部分を修正するのを手伝ってくれるなら:

[newManagedObject setValue:[[coursesArray objectAtIndex: i ]forKey:@"courseName"] forKey:@"courseName"];

値は、Key:@"courseName"のコアデータに追加されます。

4

1 に答える 1

3
[newManagedObject setValue:[[coursesArray objectAtIndex: i ]forKey:@"courseName"] forKey:@"courseName"];

これは、1行に多くのコードを配置する典型的なケースだと思います。これが実際にコンパイルされるとは思わないのですか?

それをセクションに分けてみましょう。コードの中心部分を取り出して、XXに置き換えました。

[newManagedObject setValue:XX forKey:@"courseName"];

このビットは問題ないようです。setValue:forKey管理対象オブジェクトの有効なメソッドです。

XXは:

[YY forKey:@"courseName"]

これが正しいかどうかは明らかではありませんが、見栄えがよくありません。メソッド名が正しくないようです。

YYは:

[coursesArray objectAtIndex:i]

これは問題なく、変更可能な辞書を返します。しかし、辞書は。と呼ばれるメソッドを実装していませんforKey:。しかし、彼らobjectForKey:あなたが望むものであると呼ばれるメソッドを実装します。

したがって、修正された行は次のようになります。

[newManagedObject setValue:[[coursesArray objectAtIndex:i] objectForKey:@"courseName"] forKey:@"courseName"];

このようなコードをたくさん書いている場合、データメンバーを保持するプロパティを持つカスタムオブジェクトの方が突然意味があります。forKey:あちこちですぐに読めなくなります。

于 2012-08-06T20:01:02.983 に答える