MGTwitterEngine - Любимый твит - PullRequest
       8

MGTwitterEngine - Любимый твит

2 голосов
/ 16 января 2011

Я пытаюсь добавить твит в избранное с помощью MGTwitterEngine

Я использую «Tweet», созданный мной подкласс, который обрабатывает идентификаторы пользователей, имена и т. Д. Поэтому я помещаю это в строку, которая затем преобразуется в число, которое можно использовать для обработки действия fav. твит

Мой код: http://pastie.org/1467311

1 Ответ

2 голосов
/ 03 июля 2011

Это очень старый пост, и я не уверен, что кто-то его ищет, но мне удалось сделать именно это сегодня, после некоторого удара. Вот что вам нужно сделать:

  1. Объявите, что ваш класс реализует MGTwitterEngineDelegate
  2. Реализуйте хотя бы следующий метод получения статуса

    (void)statusesReceived:(NSArray *)statuses forRequest:(NSString *)connectionIdentifier
    
  3. Массив statuses имеет NSDictionary на первой позиции. Извлеките его следующим образом

    NSDictionary *status = (NSDictionary *)[statuses objectAtIndex:0];
    
  4. Извлечение двух ключей из словаря "source_api_request_type" и "id". Сохраните их оба как значения NSString.

  5. Обновите MGTwitterEngine.h и MGTwitterEngine.m, чтобы изменить сигнатуру метода метода markUpdate для отправки updateID в виде строки NSString вместо unsigned int. После изменения оно будет выглядеть примерно так:

    (NSString *)markUpdate:(NSString *)updateID asFavorite:(BOOL)flag; // favorites/create, favorites/destroy
    
  6. Измените метод %u в markUpdate на %@, чтобы изменение входного параметра применялось правильно. (Вы должны внести изменения в двух местах метода)

  7. Вернувшись в свой код, вы будете использовать что-то похожее на следующее, чтобы отправить твит.

    [twitterEngine sendUpdate: @"My Tweet Text"]; 
    
  8. Это вызовет событие statusRectained после успешной публикации твита. Как уже упоминалось ранее, в событии statusRectained нам нужны два значения: tweetId и тип запроса.

  9. Используйте следующий код, чтобы проверить, является ли запрос Type == 5 и вызывать ли метод markUpdate путем передачи значений идентификатора твита и логического значения YES в избранное (или в NO, если нет) чирикать. Ваш код будет выглядеть так:

    (void)statusesReceived:(NSArray *)statuses forRequest:(NSString *)connectionIdentifier
    {
        if([statuses count] > 0)
        {
            NSDictionary *status = (NSDictionary *)[statuses objectAtIndex:0];
            NSString *stringId = (NSString *)[status objectForKey:@"id"];
            NSNumber *requestType = (NSNumber *)[status objectForKey:@"source_api_request_type"];
            NSLog(@"Tweet ID String - %@ and Request Type: %@.", stringId, requestType);
            if ([requestType isEqualToNumber: [NSNumber numberWithInt: 5]])
            {
                [twitterEngine markUpdate: stringId asFavorite:YES];
            }
        }
    }
    
  10. Тайный соус «типа запроса» 5 состоит в том, что новая публикация твита имеет «идентификатор запроса API» 5, и мы хотим отметить новые твиты только как избранные. (Когда вы смотрите идентификатор после того, как твит отмечен как избранный, это будет статус 26).

С выходом iOS 5 MGTwitterEngine скоро будет устаревшим. Но мне было интересно понять это в моем собственном проекте. Надеюсь, кто-то найдет это полезным.

...