将JSON ARRAY转换为NSnumber数组

时间:2014-01-11 01:03:33

标签: ios arrays json core-plot type-conversion

我使用以下代码将从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];

并且数据很好。所以我很确定这是数据类型问题。但我可能是错的。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

如果从JSON返回的日期是字符串格式,则需要使用数据格式化程序将json字符串转换为NSDate。

//接口声明中的某些地方

    @property (strong, nonatomic) NSDateFormatter * _dateFormatter_en_US_POSIX;

然后将方法添加到类

    /** create a date formatter to send data to a JSON consumer
     *
     */
    - (NSDateFormatter *)dateFormatterForjsonDateStringFromNSDate
    {
        if (_dateFormatter_en_US_POSIX){
            return _dateFormatter_en_US_POSIX;
        }
        _dateFormatter_en_US_POSIX = [[NSDateFormatter alloc] init];
        NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
        [_dateFormatter_en_US_POSIX setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'"];
        [_dateFormatter_en_US_POSIX setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
        [_dateFormatter_en_US_POSIX setLocale:enUSPOSIXLocale];
        return _dateFormatter_en_US_POSIX;
    }

-(NSDate*) dateWithJSONString:( NSString*) dateStr
{
    NSDateFormatter *dateFormatter = [self dateFormatterForjsonDateStringFromNSDate];
    return [dateFormatter dateFromString:dateStr];
}

然后改变:

 [_datearray addObject:[[json objectAtIndex:i] valueForKey:@"Date"]];

要:

 [_datearray addObject:[self dateWithJSONString:[[json objectAtIndex:i] valueForKey:@"Date"]]];