使用NSInteger作为数组索引

时间:2013-12-31 22:35:05

标签: objective-c arrays json

祝自己快乐!

我遇到以下问题。第一个逻辑:

从服务器获取json。 Json值始终是一个数字。将plist读入数组。 NSLog带有服务器json值索引的数组。

我的plist:

Key     Type     Value
Item 0  String   New York
Item 1  String   Atlanta

我的代码:

获取Json

NSString *url_req=@"http://domain.com/index.php";

            NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url_req]];

            NSData *response = [NSURLConnection sendSynchronousRequest:request
                                                     returningResponse:nil error:nil];

            NSError *jsonParsingError = nil;
            NSDictionary *json = [NSJSONSerialization JSONObjectWithData:response
                                                                      options:0 error:&jsonParsingError];

            NSArray *cityArray = [json objectForKey:@"city"];
            for (NSDictionary *alert in pestoArray ){
                myLoc = [[alert objectForKey:@"location"] integerValue];
            }

Json工作得很好!

读取plist和nslog相应的值:

NSString *path = [[NSBundle mainBundle] pathForResource:@"townsList" ofType:@"plist"];
 NSArray *arrayNo= [[NSArray alloc] initWithContentsOfFile:path];            
 NSLog(@"City %@",arrayNo[myLoc]);

到目前为止,arrayNo[myLoc]将返回null,但arrayNo[1]将返回亚特兰大。

如何使用JSON中的整数值作为数组索引?

谢谢!

编辑:使用arrayNo[myLoc]时的错误输出

Indexing expression is invalid because subscript type 'NSInteger *' (aka 'int *') is not an integral or Objective-C pointer type

1 个答案:

答案 0 :(得分:8)

根据错误消息,您将myLoc声明为指向NSInteger(NSInteger *myLoc)的指针,而不是实际的NSInteger(NSInteger myLoc)。它必须是后者。