Objective C 访问元素
Posted
技术标签:
【中文标题】Objective C 访问元素【英文标题】:Objective C Accessing Elements 【发布时间】:2016-07-04 02:58:02 【问题描述】:我正在尝试获取从字典中提取的元素并将它们转换为双精度。数据是从 JSON 中提取的,并且似乎被提取到一种数组中(不确定是哪种类型)。有没有办法从数组中单独获取下面列出的数字?如果您需要更多信息,请告诉我。
NSDictionary *parameters = @@"username":savedUser,@"password":savedPass;
NSURL *URL = [NSURL URLWithString:@"testwebsite"];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager GET:URL.absoluteString parameters:parameters progress:nil success:^(NSURLSessionTask *task, id responseObject)
NSError *error = nil;
JSON = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:&error];
if (error)
NSLog(@"Error serializing %@", error);
NSLog(@"%@",JSON);
NSString *price = [NSString stringWithFormat:@"%@",[JSON valueForKey:@"UnitPrice"]];
price= [price stringByReplacingOccurrencesOfString:@"\"" withString:@""];
NSLog(@"Price: %@",price);
[transactionTotals addObject:price];
[self createGraph:100];
failure:^(NSURLSessionTask *operation, NSError *error)
NSLog(@"Error1: %@", [error debugDescription]);
NSLog(@"Error2: %@", [error localizedDescription]);
];
@catch (NSException *exception)
NSLog(@"%@",exception);
日志(我需要单独提取的单价值):
字典输出:
2016-07-03 22:52:21.330 T2PApp[2272:658440] (
OrderDetailID = 3;
ProductName = Oranges;
UnitPrice = "399.99";
date = "2016-06-09T21:45:06";
,
OrderDetailID = 7;
ProductName = Oranges;
UnitPrice = 1000;
date = "2016-06-13T22:15:47.107";
)
提取的 UnitPrice 输出(仍未完全提取):
2016-07-03 22:52:21.330 T2PApp[2272:658440] Price: (
399.99,
1000
)
【问题讨论】:
【参考方案1】:我认为您需要的是从数组中的对象中挖掘数据。这与 JSON 无关。 有很多方法可以做到这一点,但不是一种简单的方法来挖掘它。 比如新建一个数组,遍历目标数组,把需要的属性放到新数组中。 基本上就是这样。 在您的代码中,也许下面的代码会起作用。
NSLog(@"%@",JSON);
NSMutableArray *priceArr = [NSMutableArray array];
NSArray *arr = nil;
if ([JSON isKindOfClass:[NSArray class]])
arr = (NSArray *)JSON;
for (NSDictionary *dic in arr)
NSString *price = [NSString stringWithFormat:@"%@",[dic valueForKey:@"UnitPrice"]];
price= [price stringByReplacingOccurrencesOfString:@"\"" withString:@""];
[priceArr addObject:price];
priceArr 是您所需要的。
【讨论】:
我将如何迭代价格数组? ObjectAtIndex 似乎不起作用。以上是关于Objective C 访问元素的主要内容,如果未能解决你的问题,请参考以下文章
将 NSArray 中的每个 NSString 元素显示为 UIButton Objective C
将NSArray中的每个NSString元素显示为UIButton Objective C