nsmutabledictionary의 키에 어떻게 액세스합니까?
-
16-09-2019 - |
문제
NSMutableDictionary *bookmarks = [NSMutableDictionary dictionary];
[bookmarks setObject:[NSURL URLWithString:(NSString *) @"http://stanford.edu"] forKey:
@"Stanford University"];
[bookmarks setObject:[NSURL URLWithString:(NSString *) @"http://apple.com"] forKey:
@"Apple"];
[bookmarks setObject:[NSURL URLWithString:(NSString *) @"http://itunes.stanford.edu"] forKey:
@"Stanford on iTunesU"];
[bookmarks setObject:[NSURL URLWithString:(NSString *) @"http://stanfordshop.com"] forKey:
@"Stanford Mall"];
NSEnumerator *browser = [bookmarks keyEnumerator];
id each;
NSURL *url;
while ((each = [browser nextObject])) {
url = [bookmarks objectForKey:(NSString *)each];
NSLog('%@'", url);
스탠포드의 iPhone 프로그래밍 재료가 죽었다는 것을 알고 있습니다 (확실합니다). URL로 키를 인쇄하는 방법을 찾는 데 약간의 어려움이 있습니다. 또한 스탠포드로 시작하는 키만 인쇄하는 방법을 알 수 없습니다. 그래도 NSString의 방법이라는 것을 알고 있습니다.
해결책
for (NSString * key in [bookmarks allKeys])
{
if ([key hasPrefix:@"Stanford"])
{
NSLog(key);
}
}
다른 팁
어떤 상황에서는 필터링 컬렉션이 '테스트 통과'방법으로 가장 명확하게 수행되지만이 간단한 경우에는 더 복잡해 보입니다.
NSArray *keys = [bookmarks allKeys];
NSArray *stanfordKeys = [keys objectsAtIndexes:[keys indexesOfObjectsPassingTest:^BOOL(NSString *key, NSUInteger idx, BOOL *stop) {
return [key hasPrefix:@"Stanford"];
}]];
NSLog(@"%@", stanfordKeys);
제휴하지 않습니다 StackOverflow