【问题标题】:How to get a NSDictonarys out of JsonArray?如何从 JsonArray 中获取 NSDictonarys?
【发布时间】:2013-12-20 17:01:51
【问题描述】:

我正在开发一个 iOS - 项目,它将显示一个人的关注者。 有一个正在运行的 Web 服务器从不同的社交网络获取数据,将它们与时间戳一起保存到 SQL 数据库中。 iOS App 发出请求并从 Sql 数据库中获取 Json。我将 Json 转换为 Array 并打印到控制台。

NSString *url = [NSString stringWithFormat:@"http://getdata.php"];
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];

NSError *error;
NSArray *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
NSLog(@"%@",json);

输出:

(
    {
    date = "2013-12-11";
    facebook = 107;
    instagram = 47;
    twitter = 42;
},
    {
    date = "2013-12-12";
    facebook = 107;
    instagram = 45;
    twitter = 42;
},
    {
    date = "2013-12-13";
    facebook = 107;
    instagram = 45;
    twitter = 42;
})

所以我想做的是,将 Facebook、Instagram 和 Twitter 关注者与前一天进行比较。我怎么能这样做:获取整个对象,日期是今天。它会打印出来:

    date = "2013-12-13";
    facebook = 107;
    instagram = 45;
    twitter = 42;

感谢您的帮助,对不起我的英语!

【问题讨论】:

  • 你试过简单地使用 NSDictionary 而不是 NSArray 吗?
  • 你拥有的是一个 NSDictionary 对象的 NSArray。要获取 NSDictionary,请索引数组。
  • @nickAtStack - 这只会错误地命名对象并进一步混淆事物。
  • 提示:查看 NSLog 列表——() 字符围绕着一个数组。 {} 字符围绕着一个字典。
  • > "我将 Json 转换为数组" 不,你没有。您刚刚将 JSON 序列化为一个表示,它恰好是 Foundation 对象的层次结构,其根对象是 NSArray 或 NSDictionary。

标签: ios arrays json dictionary


【解决方案1】:

您可以使用一个简单的 for 循环来枚举数组中的所有字典。为了将每一天与前一天进行比较,您必须从索引 1 开始,如下所示:

for (NSUInteger i = 1; i < json.count; i++) {
    NSDictionary *currentDay = json[i];
    NSDictionary *previousDay = json[i-1];

    // Compare the follower counts for each social network here
}

【讨论】:

  • 这是一个完美的想法,它的工作!但万一网络服务器没有更新这些值。它采用前一天的价值。有没有办法查到日期?如果 date = today 得到字典?
  • @user3123470 是的,有,但这是一个不同的问题,因此应该作为一个单独的问题提出。
  • 我该怎么做:获取整个对象,其中 Date 是今天。 这是我的问题的一部分,但如果你能回答第二个问题,那就太好了.
  • 将每个字典中的NSString 转换为NSDate 并与当前日期进行比较。请记住,NSDate 包含日期和时间,因此您需要将 今天NSDate 标准化为午夜。 NSDateComponentsNSCalendar 的组合将对此有所帮助。那么比较就是调用compare:并寻找NSOrderedSame
猜你喜欢
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多