2

コアデータにデータを保存するチャットアプリを作成しています。私は次のエンティティを使用しています、

ここに画像の説明を入力

すべての一意のデータをフェッチしたいのですがcustomerno、そのデータは降順になり、 other から送信されたmessagedate最新のものも含まれます。Facebookのチャットメッセージ一覧やスマイラービューなどの一覧を表示したい。私は次のコードを試しています、messagetextcmid

-(NSArray *)getAllInstanceMessages{
    NSError *error = nil;
    NSFetchRequest * req = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"IMDetails" inManagedObjectContext:theManageContext];
    [req setPredicate:[NSPredicate predicateWithFormat:@"cmid=%@", theCmID]];
    NSDictionary *entityProperties = [entity propertiesByName];
    [req setEntity:entity];
    [req setReturnsDistinctResults:YES];
    [req setResultType:NSDictionaryResultType];
    [req setPropertiesToFetch:[NSArray arrayWithObject:[entityProperties objectForKey:@"customerno"]]];
    [req setSortDescriptors:[NSArray arrayWithObject:[[NSSortDescriptor alloc] initWithKey:@"messagedate" ascending:NO]]];
    NSArray *result = [theManageContext executeFetchRequest:req error:&error];

    if(error){
        NSLog(@"%s, %@", __FUNCTION__, [error localizedDescription]);
        return nil;
    }
    return result;
}

私の次の出力を与えられた上記のコード、

Printing description of result:
<_PFArray 0xa3cda70>(
{
    customerno = CN00001;
    customerno = CN00002;
    customerno = CN00003;
}
)

この一意の番号と一緒に完全なデータが必要です。CN0001 番号の上に想定される一意のデータを含むディクショナリ/ManagedObject の配列を意味しますが、他の属性値は含まれていません。

私はコードで何が間違っていますか?

4

2 に答える 2

1

setPropertiesToFetch メソッドの NSFetchRequest クラス リファレンス ドキュメントによると、「この値は、resultType が NSDictionaryResultType に設定されている場合にのみ使用されます。」

于 2013-09-28T13:41:54.593 に答える
0

setPropertiesToFetch で取得したいテーブルのすべての属性を設定する必要があります。お気に入り

[req setPropertiesToFetch:[NSArray arrayWithObjects:[entityProperties objectForKey:@"customerno"],[entityProperties objectForKey:@"messagetext"],nil]];

これは、両方の値を持つ NSDictionary を返します。

于 2013-09-28T14:33:08.587 に答える