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 访问元素的主要内容,如果未能解决你的问题,请参考以下文章

Objective C检查元素是不是存在于Web视图中

将 NSArray 中的每个 NSString 元素显示为 UIButton Objective C

将NSArray中的每个NSString元素显示为UIButton Objective C

无法访问 XCTestCase Objective C 中的单例对象

如何访问字典数组并使用Objective C中的字典对象?

Objective C:从视图控制器访问变量到 NSObject