Как проверить данные словаря? - PullRequest
0 голосов
/ 15 июня 2011

@ "noresult" Здесь favData.searchDict - объект словаря, он состоит из 3 пар ключ / значение, фактически данные в этом объекте словаря получают динамически из вызова службы.Он состоит из 3 строк, каждая строка состоит из данных типа «noresult» или некоторого URL-адреса, например «www.gmail.com», поэтому мое требование заключается в том, что если я получу URL в первой строке, мне не следует проверять оставшиеся 2 строки,Поэтому, если я не получил URL-адрес в первой строке, я должен проверить 2-ю строку, если я получу URL-адрес во 2-й строке, нет необходимости проверять 3-ю строку, если первые 2 строки "noresult", тогда я должен проверить 3-ю строку.

Я пишу код, как показано ниже, этот код проверяет две другие строки, даже если я получил URL в самой первой строке, поэтому вы можете предложить, как написать логику, чтобы не проверять 2-ю и 3-юнаоборот, если я получу данные

for (id key in favData.searchDict) {
    NSLog(@"objects inside favData.searchDict is %@",[favData.searchDict objectForKey:key]);
    NSRange match = [[favData.searchDict objectForKey:key] rangeOfString:@"noresult"];
    if(match.location == NSNotFound) {
        req=[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithString:[favData.searchDict objectForKey:key]]]];
       [[[featuredAsset viewControler]iWebview]loadRequest:req];
    }
}

Ответы [ 3 ]

1 голос
/ 15 июня 2011

Для более современного метода используйте основанный на блоке NSDictionary метод

- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(id key, id obj, BOOL *stop))block

И вы можете установить stop внутри блока, чтобы остановить дальнейшее перечисление.

1 голос
/ 15 июня 2011
    for (id key in favData.searchDict) {

        NSLog(@"objects inside favData.searchDict is %@",[favData.searchDict objectForKey:key]);

        NSRange match = [[favData.searchDict objectForKey:key] rangeOfString:kNoResult];
        BOOL flag;
        if (flag != YES) {
            if(match.location == NSNotFound)
            {
            req=[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithString:[favData.searchDict objectForKey:key]]]];
            [[[featuredAsset viewControler]iWebview]loadRequest:req];
            flag = YES;
            }

        }
    }

Я думаю, это решит твою проблему ......

1 голос
/ 15 июня 2011

Просто break цикл, когда выполняется условие, которое вы ищете:

for (id key in favData.searchDict) {
    NSRange match = [[favData.searchDict objectForKey:key] rangeOfString:kNoResult];
    if (match.location == NSNotFound) {
        req=[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithString:[favData.searchDict objectForKey:key]]]];
       [[[featuredAsset viewControler]iWebview]loadRequest:req];
       break; /* execution will continue ... */
    }
}
/* ...here */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...