NSDictionary:将NSString键转换为小写以在其上搜索字符串

Van*_*nel 3 iphone compare objective-c nsdictionary nsstring

我正在开发一个iPhone应用程序.

我使用NSDictionary将城市的名称存储为关键,将人口存储为值.我想用小写搜索键.

我用过这个:

NSDictionary *dict;

[dict objectForKey:[[city stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] lowercaseString]];
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用.

我知道,我可以做一个for,将键转换为小写并与城市进行比较.

还有其他办法吗?也许,使用NSDictionary方法.

更新
NSDictionary从属性列表加载.

谢谢.

dra*_*ard 6

我在NSDictionary类别中使用此方法.

@implementation NSDictionary (MyCategory)
- (NSDictionary *)dictionaryWithLowercaseKeys {
    NSMutableDictionary *result = [NSMutableDictionary dictionaryWithCapacity:0];
    NSString *key;

    for (key in self) {
        [result setObject:[self objectForKey:key] forKey:[key lowercaseString]];
    }

    return result;
}
@end
Run Code Online (Sandbox Code Playgroud)

  • 为了上帝的缘故,你有当前字典的长度,因此最终字典... [NSMutableDictionary dictionaryWithCapacity:0]与实际大小!!! (例如[NSMutableDictionary dictionaryWithCapacity:self.count]) (6认同)