2010-05-06 48 views
0

我试图来管理数据的向下钻取列表。我有一个实体Contact,与另一个实体Rule有多对多的关系。在我的根视图控制器中,我使用抓取的结果控制器来管理和显示联系人列表。当联系被窃听,我推新视图控制器到堆栈与联系人的规则列表。如何选择子视图“子”实体?

我一直无法弄清楚如何使用第二读取的结果控制器来显示规则,所以我使用了以下内容:

// create a set of the contact's rules 
rules = [NSMutableSet set]; 
rules = [self.contact mutableSetValueForKey:@"rule"]; 

// create an array of rules from the set 
arrayOfRules = [NSMutableArray arrayWithCapacity:[rules count]]; 
for (id oneObject in rules) 
    [arrayOfRules addObject:oneObject]; 

// sort the array of rules 
NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"phoneLabel" ascending:YES]; 
[arrayOfRules sortUsingDescriptors:[NSArray arrayWithObject:descriptor]]; 
[descriptor release]; 

我创建了一套规则,然后使用为排序创建一组规则。然后我使用这两个集合来填充分组表格视图。所有这些似乎工作正常。

这里是我的问题:有一个用户可以在该视图中几个不同的动作,且大多需要知道哪些规则被窃听。但我无法弄清楚如何得到这些。例如,说一个用户想要删除一个规则。在我看来,正确的做法是一样的东西......

[rules removeObject:ruleObjectToBeRemoved] 

...但我无法弄清楚如何specifiy ruleObjectToBeRemoved。我希望这一切都有道理。

像往常一样,在此先感谢您能提供任何意见。

回答

0

我假设你以某种方式保持参照arrayOfRules。如果是这样,当用户点击单元格方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

应调用tableViewDelegate。如果是这样,你可以使用indexPath得到相应的规则对象,就这样

Rule* yourRule = [arrayOfRules objectAtIndex:indexPath.row]; 

当然,如果你有多个部分,你需要获得相应拍了拍单元阵列(使用indexPath .section)。

更简单的方法做你希望实现的是:

[arrayOfRules removeObjectAtIndex:indexPath.row]; 

希望这有助于 保罗