Я создаю приложение, в котором мне нужны обновления статуса пользователя. Я помещаю обновления статуса в массив и показываю их пользователю для выбора. Я могу собирать данные, анализировать данные из 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);
}
}