0

I have the following code to search the following dictionary:

//NSString *knownObject = @"3:40 am";
NSArray *temp = [itemDict allKeysForObject:knownObject];
NSString *key = [temp objectAtIndex:0];
NSLog(@"prayer: %@", key);

Dict:

{
    asr = "4:23 pm";
    dhuhr = "12:02 pm";
    fajr = "1:16 am";
    isha = "10:47 pm";
    maghrib = "8:24 pm";
    shurooq = "3:40 am";
}

When running the first line, it correctly returns "shurooq". However, when I use my variable:

    NSArray *temp = [itemDict allKeysForObject:nextPrayerTime];

The log output of nextPrayerTime is simply 3:40 am as expected.

Why is this not working?

Many thanks!

4

3 に答える 3

0

の値はnextPrayerTime?

ドキュメントによると、allKeysForObject:返品

ディクショナリ内のすべての anObject に対応するキーを含む新しい配列。anObject に一致するオブジェクトが見つからない場合は、空の配列を返します。

与えられた情報に基づいて、空の配列を取得していて、呼び出したときに[temp objectAtIndex:0]存在しないインデックスにアクセスしていて、範囲外の例外が発生していると思います。

于 2013-07-05T17:52:01.383 に答える
0

私は自分の答えを 100% 確信しているわけではありませんが、オブジェクトが NSString の場合、オブジェクトの比較にメソッド isEqualToString を使用していますか?

それ以外の場合は、おそらく辞書内の元のオブジェクトと比較する必要があります (同じ NSString を使用)。

于 2013-07-05T17:59:05.080 に答える