【发布时间】:2013-12-30 05:22:53
【问题描述】:
我在这里有这个数据集:https://gist.github.com/ryancoughlin/8043604 - 如果您看到tide.tideSummary,它包含一个数组,但在内部,它包含多个字典。我正在尝试访问和显示 tide.tideSummary.date.pretty 并在某种类型的表中显示(全部 33 个)(但我使用的是虚拟数据)。
我在这里遇到了一个类似的问题:Keypath for first element in embedded NSArray
在找到访问这些嵌套值的解决方案时遇到了一些麻烦。在 StackOverflow 上阅读了大量涉及非常基本的 JSON 字符串的教程和帖子,这些对我来说非常有用。
更新:
遇到这个问题:Parsing nested JSON objects with JSON Framework for Objective-C
就我而言,我有以下几点:
NSArray *prettyDate = [[tide objectForKey:@"tideSummary"] valueForKey:@"date"];
prettyDate 从NSLog 打印此内容
Pretty date array: (
{
epoch = 1388388109;
hour = 02;
mday = 30;
min = 21;
mon = 12;
pretty = "2:21 AM EST on December 30, 2013";
tzname = "America/New_York";
year = 2013;
},
{
epoch = 1388397506;
hour = 04;
mday = 30;
min = 58;
mon = 12;
pretty = "4:58 AM EST on December 30, 2013";
tzname = "America/New_York";
year = 2013;
},
{
epoch = 1388405656;
hour = 07;
mday = 30;
min = 14;
mon = 12;
pretty = "7:14 AM EST on December 30, 2013";
tzname = "America/New_York";
year = 2013;
}
然后我就可以遍历每个,抓取对象并显示?
我会做类似的事情吗:
- 抓取父项
tideSummary- 数组 - 获取上面的项目并存储
date- 字典 - 通过
objectForKey访问pretty
我有这个initWithDict
-(id)initWithDict:(NSDictionary *)json {
self = [super init];
if(self) {
NSDictionary *tide = [json valueForKeyPath:@"tide"];
NSArray *arrOfTideSummaryStats = [json valueForKeyPath:@"tide.tideSummaryStats"];
NSDictionary *dctOfTideSummaryStats = [arrOfTideSummaryStats objectAtIndex:0];
NSArray *arrOfTideSummary = [json valueForKeyPath:@"tide.tideSummary"];
// Loop through the date then...
// Loop and grab 'pretty'
// The "first" is the from the example link in my question above. Experimental oonly
id pretty = [arrOfTideSummary valueForKeyPath: @"@first.tideSummary.date.pretty"];
// This all works below
self.maxheight = [NSString stringWithFormat:@"%@", [dctOfTideSummaryStats valueForKey: @"maxheight"]];
self.minheight = [NSString stringWithFormat:@"%@", [dctOfTideSummaryStats valueForKey: @"minheight"]];
/*============================================================*/
NSArray *arrOfTideInfo = [json valueForKeyPath:@"tide.tideInfo"];
NSDictionary *dctOfTideInfo = [arrOfTideInfo objectAtIndex:0];
self.tideSite = [dctOfTideInfo valueForKey:@"tideSite"];
}
return self;
}
有没有人有任何例子或指导我的方向?希望有资源或问题可以解决。
【问题讨论】:
标签: ios objective-c json