将一个数组中的对象属性与另一个数组中的对象属性进行比较

时间:2009-07-19 15:58:56

标签: objective-c arrays object compare

我似乎在访问和比较目标c中的NSMutableArrays中的对象时遇到了困难。 我很新,所以在解释时,一些代码会很好。 我有一个角色类和一个characterfound类。代码如下所示:

@implementation character

@synthesize IDE, name;

- (void) dealloc {
    [text release];
    [super dealloc];
}

@implementation characterfound

@synthesize IDE;

- (void) dealloc {
    [text release];
    [super dealloc];
}

我有两个数组正在填充名称和ID。 如果我想只比较id来构建一个新数组或用它做其他事情。 我该怎么做。

例如

**character[]**
name :joe smith
IDE: ik321

name :james smith
IDE: ik32a

**characterfound[]**

IDE:2343k
IDE:ik32a 

所以当我比较两者时,会找到id,我可以把名字放在另一个数组中。 或输出..

我会尝试重新回答我的问题,并且更具体地回复btw。 我有两个类的角色类 @interface character : NSObject { // attributes NSInteger type; NSInteger rep1, rep2, rep3, rep4, rep5; NSString *name; NSString *IDE;

} 和characterfound类

@interface characterfound : NSObject { // attributes //NSInteger IDE; NSInteger type; NSString *IDE;

}

当我解析xml文件时,会遇到不同的标签等,并相应地填充我的字符类

例如

在findcharacter中还有一些其他的xml如下:

所以我的第一个数组将填充包含它的属性的角色对象 第二个数组的发现字符也是如此。 characterarray = [character1 name =“johnson”id =“jfja33”,character2 name =“smith”id =“sdfae23”]

characterfoundarray [characterfound ide =“jfja33,characterfound2 ide =”jap234“]; 所以我的数组充满了对象及其属性,我想比较属性(如果可能的话)并创建输出。

1 个答案:

答案 0 :(得分:0)

如果通过ID查找字符对象是一种常见操作,则应创建从id到字符对象的映射,此时从第二个数组执行查找将是微不足道的:

NSMutableDictionary* charactersById = [NSMutableDictionary dictionary];
for (Character* character in characters) {
    [charactersById setObject:character forKey:[character IDE]];
}

(请注意,我已经为示例代码创建了大写的类;您应该在代码中执行相同的操作,因为编写忽略标准语言约定的代码在任何语言中都是一个坏主意;它会大大降低您的可读性你的代码。)