Facebook API на iPhone: как сравнить два набора возвращенных обновлений статуса - PullRequest
1 голос
/ 25 марта 2012

Я создаю приложение, в котором мне нужны обновления статуса пользователя. Я помещаю обновления статуса в массив и показываю их пользователю для выбора. Я могу собирать данные, анализировать данные из JSON и помещать их в массив. Однако время от времени я хотел бы проверить, не публикуются ли новые обновления статуса. Я хотел бы сделать это, поместив новый статус в новый массив, и посмотреть, где заканчиваются новые статусы и где начинаются существующие. Я делаю это, проверяя первую строку в старом массиве статуса и проверяя, где она находится в новом массиве. Расположение первого старого статуса в новом массиве позволяет мне сказать, сколько новых статусов присутствует. Я могу сделать это отлично с Twitter API, но столкнулся с трудностями с Graph API. Сбор данных в первый раз работает отлично, а когда нет новых статусов, код работает. Проблема в том, когда новый статус публикуется. Мой код для сбора и сравнения данных:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{   
    NSMutableArray *goodstatusesFB = [[NSMutableArray alloc] init];
    NSMutableArray *datafromFB = [[NSMutableArray alloc] init];

    NSString *stringfromFB = [[[NSString alloc] initWithData:responseData encoding: NSASCIIStringEncoding] autorelease];
    NSDictionary *json = [stringfromFB JSONValue];
    NSArray *items = [json valueForKeyPath:@"data"];
    for (int a = 0; a < [items count]; a++)
    {
        NSDictionary *tempdict = [items objectAtIndex:a];
        NSString *typeFB = [tempdict objectForKey:@"type"];
        if ([typeFB isEqualToString:@"status"])
        {
            [datafromFB addObject:tempdict];
        }   
    }
    if ([goodstatusesFBexisting count] == 0)
    {
        //First time loading FB statuses
        [goodstatusesFBexisting addObjectsFromArray:goodstatusesFB];
    }
    else
    {
        //Existing statuses
        NSDictionary *statusDictold = [goodstatusesFBexisting objectAtIndex:0];
        NSDictionary *statusDictnew = [goodstatusesFB objectAtIndex:0];
        NSString *messageold = [statusDictold objectForKey:@"message"];
        NSString *messagenew = [statusDictnew objectForKey:@"message"];
        if ([messagenew isEqualToString:messageold])
        {
            NSLog(@"No new messages");
        }//Works perfectly until here!
        else
        {
            NSLog(@"New messages!"); 
            NSMutableArray *textfromFB = [[NSMutableArray alloc] init];
            NSMutableArray *textfromnew = [[NSMutableArray alloc] init];
            int numberofnewFB = 0;

            for (int a = 0; a < [goodstatusesFBexisting count]; a++)
            {
                NSDictionary *newcontents = [[NSDictionary alloc] init];
                newcontents = [goodstatusesFBexisting objectAtIndex:a];
                NSString *textfromexisting = [newcontents objectForKey:@"message"];
                [textfromFB insertObject:textfromexisting atIndex:a];      
            }   
            for (int b = 0; b < [goodstatusesFB count]; b++)
            {
                NSDictionary *newcontents1 = [[NSDictionary alloc] init];
                newcontents1 = [goodstatusesFB objectAtIndex:b];
                NSString *textfromexisting = [newcontents1 objectForKey:@"message"];
                [textfromnew insertObject:textfromexisting atIndex:b];       
            }
            numberofnewFB = [textfromnew indexOfObject:messageold];
            NSLog(@"You have %i new statuses", numberofnewFB);        
        }
    }
...