使用NSFetchRequest获取二进制数据

时间:2013-10-08 18:35:40

标签: ios objective-c

我正在寻找二进制数据和字符串,二进制数据应该是“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];
}

正如我之前所说,有没有办法将属性设置为二进制数据类型?

1 个答案:

答案 0 :(得分:0)

您似乎误解了propertiesToFetch的功能。这是一个列表 您感兴趣的属性(或属性)。 例如,如果" Group"是一个具有属性的实体" a"," b"和" c",然后你可以设置

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

并且获取请求将返回一个字典数组,其中每个字典 包含" a"和" b"一个" Group"的属性对象

如果要获取具有特定属性的所有对象,则必须添加谓词。 例如,要获取所有" Group"对象所在的" url"属性在 给定数组,您将添加谓词

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"url IN %@", urls];
[requestGroups setPredicate:predicate];