2013-05-17 39 views
0

可以說我正在做一個應用程序,你添加汽車製造商的主視圖控制器這是一個UITableView, 第二視圖控制器(這也是一個UITableView),你可以添加汽車的模型製造商名稱。桌面到另一個 - IOS

現在我的問題很簡單,我可以添加製造商,但是當我按任何製造商名稱時,我會得到所有制造商的所有型號的第二個tableview。

我試過使用可能的謂詞,過濾mutablearray然後傳遞給第二個視圖控制器。沒有成功:(

NSPredicate * pred = [NSPredicate predicateWithFormat:@"currentCategoryOfImage = '%@'",[self.categoriesArray objectAtIndex:indexPath.row]]; 
    [self.myImagesObjArray filterUsingPredicate:pred]; 
    self.detailViewController.imagesItem = self.myImagesObjArray; 

,但我認爲那裏有一個地方更簡單的方法可以做到這一點仍然逃避我

+0

你能告訴我們除了「沒有成功」之外出了什麼問題嗎?因爲直接解決問題的方法是根據第一個表中選擇的內容過濾第二個表中顯示的數據。 – Caleb

回答

1

你不能在單引號中的謂語附上%@

NSPredicate *pred = [NSPredicate predicateWithFormat:@"currentCategoryOfImage = %@",[self.categoriesArray objectAtIndex:indexPath.row]]; 

而且您可能不想修改self.myImagesObjArray,但將 的詳細視圖控制器列表設置爲已過濾的陣列:

self.detailViewController.imagesItem = [self.myImagesObjArray filteredArrayUsingPredicate:pred]; 
+0

不兼容的指針類型從'NSArray *'分配給'NSMutableArray *',當我嘗試時,雖然它只有一個警告,但我的過濾器不過濾正確,我得到的所有objectsarray而不是特定的我想要 –

+0

If self .detailViewController.imagesItem'是一個NSMutableArray,然後'self.detailViewController.imagesItem = [[self.myImagesObjArray filteredArrayUsingPredicate:pred] mutableCopy]'應該可以工作。但是你真的需要一個可變數組嗎?你應該考慮把'imagesItem'聲明爲'NSArray *'。 –

+0

@EdenV .:現在有效嗎?如果您需要更多信息,請告訴我。 –

0

如果你不喜歡第一種斷言的存在與塊謂語,這樣的事情:

YourCustomObject = [self.categoriesArray objectAtIndex:indexPath.row]; 
NSArray *resultArray = [yourArray filteredArrayUsingPredicate: [NSPredicate predicateWithBlock:^BOOL(YourCustomObject *object, NSDictionary *bindings) { 
    return [YourCustomObject.comparedProperty isEqualTo:object.comparedProperty]; 
}]]; 

我不知道你的模型類的名字,所以我即興。