2010-03-19 90 views
0

在程序的一部分的两个阵列内我的工作,我需要计算所有的时候,每个人有每个人的其他项目的工作。假设我们有“员工”实体和“会话”实体。在每个会话中,有四个项目类型,分别是“A”,“B”,“C”,&“D”,每个项目类型都与员工建立多对多关系。检索关系从指针

我正在做一个循环来系统地审查每个人所选择的人合作过。首先,我将他们所有的项目类型放在一个数组中,所以它更容易循环,但是当我问最后一个嵌套的Project作为它的Employee成员时,我得到一个“无法识别的选择器”的错误。

IBOutlet NSArrayController * superList; 

编辑:我忘了表示这个数组,指向控制器的arrangeObjects。

NSArray * list = [superList arrangedObjects]; 
int x; 
for(x = 0; x < [list count]; x++){ 
NSArray *A = [[list objectAtIndex:x] valueForKey:@"projectAs"]; 
NSArray *A = [[list objectAtIndex:x] valueForKey:@"projectBs"]; 
NSArray *A = [[list objectAtIndex:x] valueForKey:@"projectCs"]; 
NSArray *A = [[list objectAtIndex:x] valueForKey:@"projectDs"]; 

NSArray *masterList = [[NSArray alloc] initWithObjects: projectAs, projectBs, projectCs, projectDs, nil]; 

int y; 
for(y = 0; y < [masterList count]; y++){ 
int z; 
for(z = 0; z < [[masterlist objectAtIndex:y] count]; z++){ 
//And now to make an Array of this employee's partners on the selected object, to run comparisons on. 
//I also have an array of keys for each session's teams, so that's what I'm referencing here: 
NSArray * thisTeam = [list objectAtIndex:y] objectAtIndex:z] valueForKey:projectKey]; 

这将引发异常......即 - [_ NSFaultingMutableSet objectAtIndex:]:无法识别的选择发送到实例

出了什么问题,去年数组创建?

+0

我看不出有什么理由要在这里使用'objectAtIndex:'而不是快速枚举:http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/Articles/ocFastEnumeration。 html#// apple_ref/doc/uid/TP30001163-CH18-SW1它不会解决您的问题(并且您应该只在此之后进行更改),但它会使代码更易于阅读。 – 2010-03-19 23:41:07

+0

这是我在Python中知道的一个重要特性,但没有在Kochan的Obj-C书中读过。非常感谢分享! – DanF 2010-03-21 04:00:03

回答

1

基于您的线路:

的NSArray * A = [[列表objectAtIndex:X] valueForKey:@ “projectAs”];

召唤:

[名单objectAtIndex:Y]

不返回数组 - 它返回的NSDictionary,这意味着你不能调用objectAtIndex:z有关结果。

看来这应该是[masterlist objectAtIndex:Y]?

+0

你死了,但我只是意识到我误解了我的代码。 “list”应该是一个指向AC的排列对象的数组,而不是AC本身。看到问题了吗? – DanF 2010-03-19 18:32:21

+0

试试这个: id whatAmI = [list objectAtIndex:y]; 的NSLog(@ “%@”,whatAmI”); 的NSArray * thisTeam = [[whatAmI objectAtIndex:Z] valueForKey:projectKey]; 在这一点上,我们需要知道到底是什么[名单objectAtIndex:Y] – ericg 2010-03-19 18:51:24

+0

所以我认为问题是,我不确定什么样的对象是当我查询一个员工(或“玩家”)检索什么他们的valueForKey:@“redTeams”是。我希望有一个数组或设置到许多情况下,这应该记得的,但是当我做了ID-NSLog的测试中,它调用键的结果: 关系的对象为{( (单位:展会; ID:0x100e75500 ; data: 这似乎是一个单一的对象,而不是一个集合或数组。 – DanF 2010-03-20 06:39:17