【发布时间】:2014-01-30 04:29:44
【问题描述】:
我使用以下代码将从 JSON 接收到的数据保存到一个数组中。
for (int i =1 ; i<[json count];i++)
{
[_datearray addObject:[[json objectAtIndex:i] valueForKey:@"Date"]];
[_soldarray addObject:[[json objectAtIndex:i] valueForKey:@"SoldAmount"]];
}
我不确定这保存的是什么类型的数据类型,有没有办法将一个数组保存为 NSdate 数组,另一个保存为 NSnumber 数组。因为我在这两个数组中使用核心图,但数据不会因为格式不同而绘制?我创建了一个简单的数组:
NSArray *prices;
prices = [NSArray arrayWithObjects:
[NSDecimalNumber numberWithFloat:0],
[NSDecimalNumber numberWithFloat:1],
[NSDecimalNumber numberWithFloat:1],
[NSDecimalNumber numberWithFloat:2],
[NSDecimalNumber numberWithFloat:3],
nil];
并且数据绘制得很好。所以我很确定这是数据类型问题。但我可能是错的。感谢您的帮助!
【问题讨论】:
-
不要使用
valueForKey:,使用objectForKey:。您的简单数组可以使用现代语法按如下方式完成:NSArray *prices = @[ @0, @1, @1, @2, @3 ];- 虽然这给出了NSNumber,而不是NSDecimalNumber。 -
我相信 valueForKey 会返回 NSStrings。您需要将字符串转换为 nsdate 和 nsdecimal 对象
-
@Hackmodford
valueForKey:将返回任何数据,而不仅仅是NSString。或者如果有多个值,它可以返回一个NSArray。 -
JSON 不处理 NSDate 对象——你需要转换。问题是,您没有告诉我们日期是如何表示的,所以我们无法告诉您该怎么做。向我们展示源 JSON 的 sn-p。
-
SoldAmount 可以作为 char 字符串或 NSNumber 返回。日期可能会作为格式化日期返回,例如“2013-12-12”(在 NSString 中)或“Unix 纪元”值,即自 1970 年 1 月 1 日以来的秒数。后者将是一个类似于 1389403553 的数字,返回作为 NSNumber。
标签: ios arrays json core-plot type-conversion