0

データの多くの用途で、1 つのことが私を混乱させます。CoreData の EG と NSManagedObject サブクラスのプロパティ名は、CoreData 属性のプロパティと同じです。同様のことが NSXMLParser にも当てはまります。

どうしてこれなの?使用されている属性の名前の文字列が表示されないため、混乱します。私が取得したフェッチリクエストオブジェクトをNSLogingしている間、

    "<Person: 0x6d5be20> (entity: Person; id: 0x6d5dce0 <x-coredata://6800B6A5-87AF-46B4-9836-9D412A9B3EE4/Person/p1> ; data: {\n    age = 51;\n    firstName = Anthony;\n    lastName = Robbins;\n})",

配列要素の 1 つとして。私は何も違うとは思わないでしょう。

しかし、チュートリアルでは、配列を反復処理するときに

    for (Person *thisPerson in persons)

(thisPerson は不思議なプロパティを持つデータ オブジェクトです)。プロパティ名は名前順にソートされているようです。

            NSLog(@"First Name = %@", thisPerson.firstName);

なぜこれが地獄なのですか?確かに、このデータを推定するには、NSRegex 式と文字列の変更の集中砲火が必要です。

4

1 に答える 1

0

Core Data (NSXMLParser ではない) については、Core Data は単純にプロパティ名を使用して、モデル内の対応するプロパティを検索します。インスタンスにアクセスlastNameしている場合、実装はありませんNSManagedObjectfoo.lastName

-(NSString *)lastName

これにより、NSObject クラスがフォールバックしNSKeyValueCoding、その呼び出しが

[foo valueForKey:@"lastName"]

このNSManagedObjectクラスは-valueForKey:(およびその他のNSKeyValueCoding関連するメソッドを) オーバーライドし、それを使用して を介してデータにアクセスしますNSPersistentStoreCoordinator

于 2012-07-04T14:54:41.207 に答える