0

バイナリ データと文字列を取得しようとしていますが、バイナリ データは "setPropertiesToFetch." である必要があります。文字列は正常にフェッチされましたが、バイナリ データをフェッチすると、メモリ アドレスのみが返され、実際のコンテンツは返されません。

私の現在のコード:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:id(id)sender 
{ 
    TBAppDelegate *delegate = (TBAppDelegate *)[[UIApplication sharedApplication] delegate];

    managedObjectContext = [delegate managedObjectContext];

    NSFetchRequest *requestGroups = [[NSFetchRequest alloc] init];

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Group" inManagedObjectContext:managedObjectContext];

    [requestGroups setFetchBatchSize:INFINITY];

    [requestGroups setEntity:entity];

    [requestGroups setReturnsDistinctResults:YES];

    NSMutableArray *urls = [NSKeyedUnarchiver unarchiveObjectWithData:self.group.selectedurl];

    [requestGroups setPropertiesToFetch:urls];

    [requestGroups setResultType:NSDictionaryResultType];

    NSError *error;

    self.groups = [managedObjectContext executeFetchRequest:requestGroups error:&error];

    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

    TBGroupsDetailViewController *detailsController = segue.destinationViewController;

    detailsController.group_name = [self.groups objectAtIndex:indexPath.row];
}

前に言ったように、バイナリ データ型としてフェッチするようにプロパティを設定する方法はありますか?

4

1 に答える 1

0

の機能を誤解しているようですpropertiesToFetch。これは、関心のある属性 (またはプロパティ) のリストです。たとえば、「グループ」が属性「a」、「b」、および「c」を持つエンティティである場合、設定できます。

[requestGroups setPropertiesToFetch:@[@"a", @"b"];
[requestGroups setResultType:NSDictionaryResultType];

フェッチ要求は辞書の配列を返します。各辞書には、1 つの「グループ」オブジェクトの「a」属性と「b」属性が含まれています。

特定のプロパティを持つすべてのオブジェクトをフェッチする場合は、predicateを追加する必要があります。たとえば、「url」属性が指定された配列にあるすべての「Group」オブジェクトを取得するには、述語を追加します。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"url IN %@", urls];
[requestGroups setPredicate:predicate];
于 2013-10-08T19:16:50.167 に答える