【问题标题】:Use NSInteger as array index使用 NSInteger 作为数组索引
【发布时间】:2013-12-31 22:35:05
【问题描述】:

祝你新年快乐!

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

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

我的清单:

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] 将返回 Atlanta。

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

谢谢!

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

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

【问题讨论】:

  • myLoc 的值是多少?你在哪里声明它?它的类型是什么?

标签: objective-c arrays json


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2021-12-25
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多