【问题标题】:MGTwitterEngine and iPhoneMGTwitterEngine 和 iPhone
【发布时间】:2010-11-14 22:36:27
【问题描述】:

我下载了 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;
    };

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

谢谢

【问题讨论】:

标签: iphone objective-c twitter mgtwitterengine


【解决方案1】:

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

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

所以你传递给你的 NSLog() 语句的任何对象实际上都是一个字典,你可以通过调用来访问这些字段:

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

record 是对象。请记住,user 字段是一个子字典。您可以这样访问它:

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

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

最好的问候,

【讨论】:

  • 谢谢马特。很好的答案。你能举个例子说明你使用 NSArray 作为表数据源并提取我需要的东西吗?
【解决方案2】:

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

关键(双关语:D)是在适当的委托方法中使用字典。查看 Matt Long 关于该主题的示例代码 in another thread

这样处理:

[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):消息”。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 2011-05-27
    • 2011-09-14
    • 2011-06-15
    • 2011-09-08
    相关资源
    最近更新 更多