Не удается сравнить две строки из Twitter API на iPhone - PullRequest
0 голосов
/ 19 марта 2012

Я пытаюсь получать твиты с помощью API Twitter, но по какой-то причине эта проблема возникает, когда я пытаюсь обновить твиты:

[__NSCFDictionary isEqualToString:]: unrecognized selector sent to instance 0x6c22e70

Получение твитов в первый раз и заполнение «твитов» происходит правильно, и когда я запускаю NSTog от twtternew и существующих твитов, оба показывают одно и то же. Обе строки являются словарями, но почему я не могу сравнить их таким образом? Спасибо!

- (void)statusesReceived:(NSArray *)statuses forRequest:(NSString *)connectionIdentifier { 
NSString *fromtwitternew = [statuses objectAtIndex:0];
    NSString *existingtwitter = [tweetssofar objectAtIndex:0];
    NSLog(@"No problem so far");
    if ([fromtwitternew isEqualToString:existingtwitter]) {       //No new tweets
        NSLog(@"No new tweets");
        contents = [[NSDictionary alloc] init];

        contents = [tweetssofar objectAtIndex:counter];
}

Ответы [ 2 ]

1 голос
/ 19 марта 2012

isEqualToString: работает только для строк, и эти твиты, вероятно, представляют собой строки json или xml, проанализированные в словарях парсером. Если вы хотите узнать, равны ли два проанализированных твита, вы можете сравнить их следующим образом:

[[tweetA valueForKey:@"id"] isEqualToNumber:[tweetB valueForKey:@"id"]];
0 голосов
/ 19 марта 2012

@ Prajoth со следующим кодом, я уверен, что вы сможете решить вашу проблему

- (void)statusesReceived:(NSArray *)statuses forRequest:(NSString *)connectionIdentifier { 
    if ([statuses count] > 0 && [tweetssofar count] > 0) {

        id fromtwitternew = [statuses objectAtIndex:0];
        if ([fromtwitternew isKindOfClass:[NSDictionary class]]) {
            //Handle code accroding to Dictionary Results

            contents = [[NSDictionary alloc] init];

            contents = [tweetssofar objectAtIndex:counter];            
        }
        else if ([fromtwitternew isKindOfClass:[NSString class]]) { 
            //Make Sure that you have added Only Strings to tweetssofar , in case You have added dictionary you can not use isEqualToString
            NSString *existingtwitter = [tweetssofar objectAtIndex:0];
            if ([fromtwitternew isEqualToString:existingtwitter]) {       //No new tweets
                NSLog(@"No new tweets");
            }

        }
    }
}

Сбой наиболее вероятен, потому что вы сравниваете isEqualToString: метод для сравнения двух объектов словаря, которые вы не должны делать. Если вам нужно сравнить два твита, вы должны сначала извлечь строки из словаря, а затем сравнить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...