3

アプリケーション内のすべてのレコードを取得するために foowin 関数を使用しています

-(NSArray*)recordsInTable:(NSString*)tableName andManageObjectContext:(NSManagedObjectContext *)manageObjContext
{
    NSError *error=nil;
    // **** log objects currently in database ****
    // create fetch object, this object fetch's the objects out of the database
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName: tableName inManagedObjectContext:manageObjContext];
    [fetchRequest setEntity:entity];
    NSArray *fetchedObjects = [manageObjContext executeFetchRequest:fetchRequest error:&error];
    return  fetchedObjects;
}

そして、次のコードを使用してレコードを取得します

  NSArray *records=[dbAccessObj recordsInTable:@"Details" andManageObjectContext:managedObjectContext];
    NSLog(@"records %@",records);

このようなログを取得しています

**records (
    "<Details: 0x76374b0> (entity: Details; id: 0x7636730 <x-coredata://CDEF0797-F141-47A7-902D-9689DCD90B83/Details/p1> ; data: <fault>)",
    "<Details: 0x7637770> (entity: Details; id: 0x7636740 <x-coredata://CDEF0797-F141-47A7-902D-9689DCD90B83/Details/p2> ; data: <fault>)",
    "<Details: 0x7637870> (entity: Details; id: 0x7636750 <x-coredata://CDEF0797-F141-47A7-902D-9689DCD90B83/Details/p3> ; data: <fault>)"
)**

しかし、以下に示すレコードにすべての詳細が表示されているログを表示したいのですが、私が作ったエラーは何ですか?

**{
    age = 11;
    fName = "firstName";
    lName = "lastname";
    sId = 4;
})**
4

2 に答える 2

2

コードにエラーはありません。配列に表示されるのは「障害」です。コア データ プログラミング ガイドから:

フォールトは、Core Data がアプリケーションのメモリ使用量を削減するために採用するメカニズムです。

... 障害は、まだ完全には実現されていない管理オブジェクトを表すプレースホルダー オブジェクト、または関係を表すコレクション オブジェクトです。

... ある段階で障害オブジェクトの永続プロパティにアクセスすると、Core Data は自動的にオブジェクトのデータを取得し、オブジェクトを初期化します。

executeFetchRequest:メモリを節約するために、フォールト (= プレースホルダー オブジェクト) の配列を返します。オブジェクトの属性を取得するとすぐに、オブジェクトは完全に初期化され、すべての属性がデバッガーに表示されます。

デバッグ用 (のみ)の場合、Core Data に配列内のすべてのオブジェクトを完全に初期化させることができます。

NSArray *allAges = [records valueForKey:@"age"];
NSLog(@"records %@",records);
于 2012-09-14T05:02:03.423 に答える
1

debugDescription を使用できると思います。デバッグ コマンド ラインから次のように記述します。

po [coreDataObject debugDescription];

詳細な情報を教えてくれます。

于 2014-06-23T15:39:11.787 に答える