2

我正在尝试使用 MGTwitterEngine 收藏一条推文

我正在使用“Tweet”一个我制作的处理用户ID、姓名等的子类。所以我把它放入一个字符串中,然后将其转换为一个可用于处理fav行为的数字。一条推文

我的代码: http: //pastie.org/1467311

4

1 回答 1

2

这是一个非常古老的帖子,不确定是否有人在寻找它,但在经历了一些“碰巧”之后,我今天设法做到了这一点。这是你必须做的:

  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将in markUpdate 方法更改为,%@以便正确应用输入参数更改。(您必须在方法中的两个地方进行更改)

  7. 回到您的代码中,您将使用类似于以下内容的内容来发送推文。

    [twitterEngine sendUpdate: @"My Tweet Text"]; 
    
  8. 一旦成功发布推文,这将引发 statusRecieved 事件。在前面提到的 statusRecieved 事件中,我们需要两个值 tweetId 和请求类型。

  9. 使用以下代码检查请求类型是否 == 5,如果是调用 markUpdate 方法,则通过将推文 ID 和布尔值 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. 'request type' 5 的秘诀在于,一条新推文发布的 'api request id' 为 5,我们只想将新推文标记为收藏。(当您在推文被标记为收藏后观看 id 时,状态为 26)。

随着 iOS 5 的临近,MGTwitterEngine 很快就会被弃用。但在我自己的项目中解决这个问题对我来说很有趣。希望有人觉得它有用。

于 2011-07-03T15:06:23.253 回答