gpt4 book ai didi

IOS Objective C - 从 url 接收 json 数据时出错

转载 作者:行者123 更新时间:2023-11-28 21:42:09 24 4
gpt4 key购买 nike

我有一个应用程序,我从 json url 接收数据。并出现下一个错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber rangeOfCharacterFromSet:]: unrecognized selector sent to instance 0xb0000000000003f3'

问题,我认为,无法正确解析从 json 接收到的数字。这段代码在几周前运行良好,现在出现错误:

    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL
URLWithString:@"http://my-url"]];

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

NSError *e;
NSArray *object = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableContainers error:&e];

NSDictionary *recipeDictionary = (NSDictionary*)object;

NSArray* recipeArray = (NSArray*)[recipeDictionary objectForKey:@"provincias"];

self.provincias = [[NSMutableArray alloc] init];


for (NSDictionary* dic in recipeArray) {

Provincias *prov = [[Provincias alloc] init];
prov.tipoProvincia = [dic objectForKey:@"Provincia"];
prov.tipoIdProvincia = [dic objectForKey:@"idProvincia"];
prov.tipoNumActos = [dic objectForKey:@"Actos"];
prov.tipoChecked = @"no";

[provincias addObject:prov];


}

[self.tableView reloadData];

json对象的结构是:

{
"provincias": [
{
"idProvincia": 15,
"Provincia": "A Coruña",
"Actos": 0
},
{
"idProvincia": 1,
"Provincia": "Álava",
"Actos": 0
},
{
"idProvincia": 2,
"Provincia": "Albacete",
"Actos": 0
},
{
"idProvincia": 3,
"Provincia": "Alicante",
"Actos": 63
},
{
"idProvincia": 4,
"Provincia": "Almeria",
"Actos": 0
},
{
"idProvincia": 33,
"Provincia": "Asturias",
"Actos": 0
},
{
"idProvincia": 5,
"Provincia": "Ávila",
"Actos": 0
},
{
"idProvincia": 6,
"Provincia": "Badajoz",
"Actos": 0
},
{
"idProvincia": 7,
"Provincia": "Baleares",
"Actos": 0
},
{
"idProvincia": 8,
"Provincia": "Barcelona",
"Actos": 0
},
{
"idProvincia": 9,
"Provincia": "Burgos",
"Actos": 0
},
{
"idProvincia": 10,
"Provincia": "Cáceres",
"Actos": 0
},
{
"idProvincia": 11,
"Provincia": "Cádiz",
"Actos": 3
},
{
"idProvincia": 14,
"Provincia": "Córdoba",
"Actos": 0
},
{
"idProvincia": 39,
"Provincia": "Cantabria",
"Actos": 0
},
{
"idProvincia": 12,
"Provincia": "Castellón",
"Actos": 206
},
{
"idProvincia": 51,
"Provincia": "Ceuta",
"Actos": 0
},
{
"idProvincia": 13,
"Provincia": "Ciudad Real",
"Actos": 0
},
{
"idProvincia": 16,
"Provincia": "Cuenca",
"Actos": 0
},
{
"idProvincia": 17,
"Provincia": "Girona",
"Actos": 0
},
{
"idProvincia": 18,
"Provincia": "Granada",
"Actos": 0
},
{
"idProvincia": 19,
"Provincia": "Guadalajara",
"Actos": 0
},
{
"idProvincia": 20,
"Provincia": "Guipúzcoa",
"Actos": 0
},
{
"idProvincia": 21,
"Provincia": "Huelva",
"Actos": 1
},
{
"idProvincia": 22,
"Provincia": "Huesca",
"Actos": 0
},
{
"idProvincia": 23,
"Provincia": "Jaén",
"Actos": 0
},
{
"idProvincia": 26,
"Provincia": "La Rioja",
"Actos": 0
},
{
"idProvincia": 35,
"Provincia": "Las Palmas",
"Actos": 0
},
{
"idProvincia": 24,
"Provincia": "León",
"Actos": 0
},
{
"idProvincia": 25,
"Provincia": "Lleida",
"Actos": 0
},
{
"idProvincia": 27,
"Provincia": "Lugo",
"Actos": 0
},
{
"idProvincia": 29,
"Provincia": "Málaga",
"Actos": 0
},
{
"idProvincia": 28,
"Provincia": "Madrid",
"Actos": 0
},
{
"idProvincia": 52,
"Provincia": "Melilla",
"Actos": 0
},
{
"idProvincia": 30,
"Provincia": "Murcia",
"Actos": 0
},
{
"idProvincia": 31,
"Provincia": "Navarra",
"Actos": 2
},
{
"idProvincia": 32,
"Provincia": "Ourense",
"Actos": 0
},
{
"idProvincia": 34,
"Provincia": "Palencia",
"Actos": 0
},
{
"idProvincia": 36,
"Provincia": "Pontevedra",
"Actos": 0
},
{
"idProvincia": 37,
"Provincia": "Salamanca",
"Actos": 0
},
{
"idProvincia": 38,
"Provincia": "Santa Cruz de Tenerife",
"Actos": 0
},
{
"idProvincia": 40,
"Provincia": "Segovia",
"Actos": 0
},
{
"idProvincia": 41,
"Provincia": "Sevilla",
"Actos": 0
},
{
"idProvincia": 42,
"Provincia": "Soria",
"Actos": 0
},
{
"idProvincia": 43,
"Provincia": "Tarragona",
"Actos": 0
},
{
"idProvincia": 44,
"Provincia": "Teruel",
"Actos": 8
},
{
"idProvincia": 45,
"Provincia": "Toledo",
"Actos": 0
},
{
"idProvincia": 46,
"Provincia": "Valencia",
"Actos": 286
},
{
"idProvincia": 47,
"Provincia": "Valladolid",
"Actos": 0
},
{
"idProvincia": 48,
"Provincia": "Vizcaya",
"Actos": 0
},
{
"idProvincia": 49,
"Provincia": "Zamora",
"Actos": 0
},
{
"idProvincia": 50,
"Provincia": "Zaragoza",
"Actos": 11
}
]}

提前致谢;)塞尔吉奥

最佳答案

不能 100% 确定您对 Provincias 的实现,但我认为您的问题出在这里:

prov.tipoProvincia = [dic objectForKey:@"Provincia"];// -> ok
prov.tipoIdProvincia = [dic objectForKey:@"idProvincia"];// -> try to send int message to convert String to Int
prov.tipoNumActos = [dic objectForKey:@"Actos"]; // -> same here

dict 中的对象是 NSString 但您需要将它们转换为 NSInteger

你可以做的是:

prov.tipoProvincia = [dic objectForKey:@"Provincia"];// -> ok
prov.tipoIdProvincia = [[dic objectForKey:@"idProvincia"] intValue];// -> you get string but Id is a number
prov.tipoNumActos = [[dic objectForKey:@"Actos"] intValue]; // -> same here

关于IOS Objective C - 从 url 接收 json 数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31584853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com