0

以下のような NSMutableArray データがあります。

(
        {
        Id = "-1";
        NameEn = Country;
    },
        {
        Id = 14;
        NameEn = Iran;
    },
        {
        Id = 11;
        NameEn = Jordan;
    },
        {
        Id = 5;
        NameEn = "United Arab Emirates";
    },
        {
        Id = 4;
        NameEn = "Suadi Arabia";
    },
        {
        Id = 3;
        NameEn = Kuwait;
    },
        {
        Id = 10;
        NameEn = Yemen;
    },
        {
        Id = 6;
        NameEn = Oman;
    },
        {
        Id = 12;
        NameEn = Syria;
    },
        {
        Id = 7;
        NameEn = Qatar;
    },
        {
        Id = 13;
        NameEn = Lebanon;
    },
        {
        Id = 1;
        NameEn = Egypt;
    },
        {
        Id = 8;
        NameEn = "Bahrain Kingdom";
    }
)

Id=5 の場所を探したいです。

どうすればいいですか?

以下で試しました。

NSString *myCountry = [[NSUserDefaults standardUserDefaults] valueForKey:@"mCountryId"];
NSUInteger indexOfTheObject = [feedsCountry indexOfObject: myCountry];
NSLog(@"indexOfTheObject===%i==%@", indexOfTheObject, myCountry);

if (NSNotFound == indexOfTheObject) {
    NSLog(@"not found...");
}

しかしnot found...、mCountryId は 5 として出力されます。

4

2 に答える 2

3

代わりに を使用し、NSDictionaryエントリを ID でキー入力します。例えば:

NSMutableDictionary* dictionary = [NSMutableDictionary new];

[dictionary setObject:@"Egypt" forKey:@"1"];
// (etc...)

編集:既に配列があり、それを変更できない場合は、次のforようなループを使用します。

for(NSDictionary* entry in givenArray){

    NSString* key = [entry objectForKey:@"Id"];
    NSString* value = [entry objectForKey:@"NameEn"];

    [dictionary setObject:value forKey:key];
}
于 2013-10-01T09:48:41.527 に答える
2
NSPredicate * filter = [NSPredicate predicateWithFormat:@"Id = 5"];
NSArray * filtered = [array filteredArrayUsingPredicate:filter];

の最初のオブジェクトfilteredは辞書ですId = 5

于 2013-10-01T09:48:28.783 に答える