2013-10-08 97 views
0

我正在尋找獲取二進制數據和和一個字符串,二進制數據應該是「setPropertiesToFetch。」。我已經成功地獲取了字符串,但是當我獲取二進制數據時,它只返回內存地址而不是實際的內容。使用NSFetchRequest獲取二進制數據

我當前的代碼:

- (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]; 
} 

正如我以前說過的,有沒有什麼辦法來設置屬性讀取爲二進制數據類型?

+0

'NSMutuableArray'?請複製/粘貼實際的編譯代碼。 –

+0

這有幫助嗎? – jsmos

+0

我還不知道你在努力達到什麼目的。 「Group」實體如何定義,以及您期望的結果如何?而'propertiesToFetch'是實體的屬性列表,爲什麼你需要「解除存檔」呢? –

回答

0

您似乎誤解了propertiesToFetch的功能。 例如,如果「組」是一個具有屬性「a」,「b」和「c」的實體,那麼您可以設置

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

並且獲取請求將返回一個字典數組,其中每個字典 包含一個「Group」對象的「a」和「b」屬性。

如果你想與某個屬性來獲取所有的對象,那麼你必須添加一個謂詞。 例如,要獲取所有「組」對象,其中的「URL」屬性是 定數組中,您將添加謂詞

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

謝謝:)我現在更瞭解它 – jsmos