0

ObjectivecのNSMutableArraysのオブジェクトにアクセスして比較するのに問題があるようです。私は非常に新しいので、説明するとき、いくつかのコードがいいでしょう。キャラクタークラスとキャラクターファウンドクラスがあります。コードは次のようになります。

@implementation character

@synthesize IDE, name;

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

@implementation characterfound

@synthesize IDE;

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

名前とIDで埋められている2つの配列があります。IDだけを比較して新しい配列を作成したり、それを使って何か他のことをしたい場合。これを行うにはどうすればよいですか。

例えば

**キャラクター[]**
名前:ジョースミス
IDE:ik321

名前:ジェームス・スミス
IDE:ik32a

** characterfound [] **

IDE:2343k
IDE:ik32a

したがって、2つを比較すると、IDが見つかり、名前を別の配列に入れることができます。またはそれを出力します。

私は私の質問を言い換えて、ところで答えるためにもっと具体的なthnxをしようとします。キャラクタークラスには2つのクラスがあります @interface character : NSObject { // attributes NSInteger type; NSInteger rep1, rep2, rep3, rep4, rep5; NSString *name; NSString *IDE;

} とキャラクターファウンドクラス

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

}

xmlファイルを解析しているときに、さまざまなタグなどが検出され、それに応じて文字クラスがいっぱいになります

例えば

また、foundcharacterには次のような他のxmlがあります。

したがって、最初の配列はその属性を含む文字オブジェクトで埋められ、2番目の配列foundcharacterも同様に埋められます。 characterarray = [character1 name = "johnson" id = "jfja33"、character2 name = "smith" id = "sdfae23"]

characterfoundarray [characterfound ide = "jfja33、characterfound2 ide =" jap234 "]; したがって、配列はオブジェクトとその属性で埋められており、属性を比較して(可能な場合)、出力を作成します。

4

1 に答える 1

0

IDによる文字オブジェクトの検索が一般的な操作である場合は、IDから文字オブジェクトへのマッピングを作成する必要があります。この時点で、2番目の配列からの検索は簡単です。

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

(サンプルコードではクラスを大文字にしていることに注意してください。標準の言語規則を無視するコードを書くことはどの言語でも悪い考えなので、コードでも同じことを行う必要があります。コードの可読性が大幅に低下します。 )。

于 2009-07-20T03:09:24.717 に答える