2

我下载了 MGTwitterEngine 并添加到我的 iPhone 项目中。我可以通过将它们转储到 NSLog 中来连接和获取雕像。但是,我不知道如何解析调用,以便将它们添加到表中。它们以 NSString 形式返回,如下所示:

      {
    "created_at" = 2009-07-25 15:28:41 -0500;
    favorited = 0;
    id = 65;
    source = "<a href=\"http://twitter.com/\">Twitter</a>";
    "source_api_request_type" = 0;
    text = "The wolf shirt strikes again!! #sdcc :P http://twitpic.com/blz4b";
    truncated = 0;
    user =         {
        "created_at" = "Sat Jul 25 20:34:33 +0000 2009";
        description = "Host of Tekzilla on Revision3 and Qore on PSN. Also, a geek.";
        "favourites_count" = 0;
        "followers_count" = 0;
        following = false;
        "friends_count" = 0;
        id = 5;
        location = "San Francisco";
        name = "Veronica Belmont";
        notifications = false;
        "profile_background_tile" = false;
        "profile_image_url" = "http://blabnow.com/avatar/Twitter_10350_new_twitter_normal.jpg";
        protected = 0;
        "screen_name" = Veronica;
        "statuses_count" = 2;
        "time_zone" = UTC;
        url = "http://www.veronicabelmont.com";
        "utc_offset" = 0;
    };

有人用过这个可以告诉我其他人是如何在他们的项目中使用它的吗?

谢谢

4

2 回答 2

8

您在控制台中看到的是 NSDictionary 的 NSLog,而不是 NSString。来自 Matt Gemmell 的MGTwitterEngine 自述文件

发送到这些方法的值都是 NSArray,其中包含每个状态或用户或直接消息的 NSDictionary,如有必要,还带有子字典(例如,时间线方法通常返回状态,每个状态都有一个子字典,提供有关发布该状态的用户)。

因此,您传递给 NSLog() 语句的任何对象实际上都是一个字典,您可以通过以下方式访问这些字段:

NSString *createdAtDate = [record valueForKey:@"created_at"];
NSString *source = [record valueForKey:@"source"];
// etc...

其中记录是对象。请记住,用户字段是一个子字典。您可以通过以下方式访问它:

NSDictionary *userDict = [record valueForKey:@"user"];
NSString *name = [userDict valueForKey:@"name"];
NSString *location = [userDict valueForKey:@"location"];
// etc...

您实际上可以使用请求中返回的 NSArray 作为表视图的数据源,然后只需通过 -cellForRowAtIndexPath 表视图委托中的索引提取您需要的数据源。

最好的祝福,

于 2009-07-29T05:53:09.640 回答
0

对于可能在这里找到自己方式的其他任何人,这是一种分析结果的方法。(来自新手,所以不要认为这是标准甚至正确的方法)

关键(双关语:D)是在适当的委托方法中使用字典。在有关该主题的另一个线程中查看 Matt Long 的示例代码。

要处理这样的事情:

[myTwitterEngine getSearchResultsForQuery:@"#ironsavior"];

他的例子是这样的,在委托方法中:

- (void)searchResultsReceived:(NSArray *)searchResults 
                   forRequest:(NSString *)connectionIdentifier
{
    if ([searchResults count] > 0)
    {
        NSDictionary *result = [searchResults objectAtIndex:0];

        NSString *fromUser = [result valueForKey:@"from_user"];
        NSString *fromUserID = [result valueForKey@"from_user_id"];
        // ...
        NSString *text = [result valueForKey@"text"];

        NSLog(@"User %@(%@): %@", fromUser, fromUserID, text);
    }
}

这将为您提供一条非常简单的消息,即“用户用户名(用户 ID):消息”。

我不确定最好的方法是什么,我正在考虑返回一个字典或数组,您可以在实现的其他地方使用它们。或者只是返回原始数组并在其他地方解析它。

查看其他线程以获取更多信息。

于 2009-12-05T06:50:59.847 回答