0

以下に 2 つの機能がありますが、結果が得られるのは 1 つだけです。「noResult」で個別の属性値のリストを取得しようとしましたが、取得できるのは {} だけです。

-(void)noResult {
  NSManagedObjectContext *moc= [xmppMessageArchivingStorage mainThreadManagedObjectContext];
  NSEntityDescription *entity= [NSEntityDescription entityForName:@"XMPPMessageArchiving_Message_CoreDataObject" inManagedObjectContext:moc];
  NSFetchRequest *request= [[NSFetchRequest alloc] init];
  [request setEntity:entity];
  [request setResultType:NSDictionaryResultType];
  [request setReturnsDistinctResults:YES];
  [request setPropertiesToFetch:[NSArray arrayWithObject:@"contact"]];

  NSArray *messages= [moc executeFetchRequest:request error:nil];
  NSLog(@"%@", messages); 
}

-(void)gotResult {
   NSManagedObjectContext *moc= [xmppMessageArchivingStorage mainThreadManagedObjectContext];
   NSEntityDescription *entity= [NSEntityDescription entityForName:@"XMPPMessageArchiving_Message_CoreDataObject" inManagedObjectContext:moc];
   NSFetchRequest *request= [[NSFetchRequest alloc] init];
   [request setEntity:entity];
   NSArray *messages= [moc executeFetchRequest:request error:nil];
}

以下は "gotResult" からのものです " (エンティティ: XMPPMessageArchiving_Message_CoreDataObject; id: 0x1c5d7fc0 ; データ: {\n 裸のJid = nil;\n 裸のJidStr = nil;\n 本体 = \"お手玉\";\n 構成 = 0;\n contact = 1000743469142;\n from = 7375011;\n メッセージ = nil;\n messageStr = nil;\n 発信 = 0;\n streamBareJidStr = nil;\n スレッド = nil;\n タイムスタンプ = \"2013-06- 05 10:56:38 +0000\";\n})"

4

1 に答える 1

2

私が考えることができる異なる動作の唯一の理由は、 でフェッチ要求を呼び出す前に管理オブジェクト コンテキストを保存しなかったことですNSDictionaryResultType

[request setResultType:NSDictionaryResultType];

示す

[request setIncludesPendingChanges:NO];

つまり、フェッチから返される配列は永続ストアの現在の状態を反映し、コンテキスト内の保留中の変更、挿入、または削除は考慮されません。

于 2013-06-10T08:29:53.743 に答える