gpt4 book ai didi

ios - 从 SBJSON 解析器返回的数组无效 (iOS)

转载 作者:行者123 更新时间:2023-11-29 03:07:08 25 4
gpt4 key购买 nike

我在使用 SBJSON 解析器处理从 PHP 网络服务返回的响应字符串时遇到错误:

NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

NSError *error;
SBJSON *json = [SBJSON new];
NSArray *returnedFromWeb = [json objectWithString:responseString error:&error];

[articles_parsed removeAllObjects];

for (int i = 0; i < [returnedFromWeb count]; i++)
{
NSDictionary *dictColumns = [returnedFromWeb objectAtIndex:i];
[self parseArticlesObject:dictColumns];
dictColumns = nil;
}

我在上面的 objectAtIndex 调用中收到一个unrecognized selector sent to instance 错误。当我检查我的数组 (returnedFromWeb) 中包含的值时,它显示有 17 个对象。但是,检查每个对象显示以下错误:

(<invalid>) [0] = <error: expected ']' error: 1 errors parsing expression >

我在下面发布了从索引 [0] 处的对象的 SBJSON 解析器返回的数据:

{
0 = {
author = "CCJ Staff";
category1 = Products;
excerpt = "Toyo";
modified = "2014-03-25 08:33:57";
"short_link" = "http://www.example.com/?p=95326";
thumbnail = "http://www.example.com/files/2014/03/ Tire.jpg";
"thumbnail_243x243" = "http://www.example.com/ihz.php?src=/blogs.dir/10/files/2014/03/ Tire.jpg&amp;w=243&amp;h=243&amp;q=100&amp;zc=1";
title = "medium-duty";
};

这是 SBJSON 正在解析的字符串(缩短为仅包含第一个对象,末尾的逗号是下一个对象开始的位置):

{"numberposts":240,"tax_query":[{"taxonomy":"topic","terms":[75,43550,14394,16564,1795,43,22,12950],"field":"term_id","orderby":"date","order":"DESC"}],"0":{"title":"medium-duty","category1":"Products", excerpt":"Toyo","modified":"2014-03-25 08:33:57","author":"Staff","thumbnail":"http://www.ccjdigital.com/files/2014/03/Tire.jpg","short_link":"http://www.ccjdigital.com/?p=95326"},

感谢任何帮助!我是 iOS 和 SBJSON 的新手,一直无法弄清楚为什么我的数组无效。

最佳答案

我的第一个想法是你得到的是一个 NSDictionary 而不是 NSArray。要找出在对返回项调用 objectAtIndex 之前添加断点,并在屏幕底部的调试器中键入:po [returnedFromWeb class]

这将告诉您返回对象的实际类。我说它可能是一本字典,因为您粘贴的 JSON 以 {(花括号)开头,其中数组以 [

由于您不能始终保证 JSOn 将被格式化为数组或字典,您可以进行一些测试以查看它是否响应 objectAtIndex: 方法,例如,这表明它是一个 NSArray。

id *returnedFromWeb = [json objectWithString:responseString error:&error];
if ([returnedFromWeb respondsToSelector:@selector(objectAtIndex:)]) {
//it's an array do array things.
} else {
//it's a dictionary do dictionary things.
}

希望对您有所帮助!

关于ios - 从 SBJSON 解析器返回的数组无效 (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22640430/

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