将 Json 添加到可变数组会导致崩溃
Posted
技术标签:
【中文标题】将 Json 添加到可变数组会导致崩溃【英文标题】:adding Json to mutable array resolves in crash 【发布时间】:2013-11-10 09:19:52 【问题描述】:大家好,我是 Xcode/ios 开发的新手
我试图将 json 数据添加到可变数组中,这会导致应用程序崩溃 :( 到目前为止,这是我的代码:
if(! [defaults objectForKey:@"Person1"])
[defaults setObject:[PersonsFromSearch objectAtIndex:index] forKey:@"Person1"];
else
NSMutableArray *Array = [[NSMutableArray alloc]init];
id object = [defaults objectForKey:@"Person1"];
Array = [object isKindOfClass:[NSArray class]] ? object : @[object];
[Array addObject:[PersonsFromSearch objectAtIndex:index]];//crash here :((
[Array moveObjectFromIndex:[Array count] toIndex:0];
故障转储:
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSArrayI addObject:]:无法识别的选择器已发送到实例 0xcb4d380” * 首先抛出调用栈:
这里有什么问题?你能帮我解决这个问题吗
数组包含这个(Json?)
Address = "\U05d3\U05e8\U05da \U05d4\U05e9\U05dc\U05d5\U05dd 53";
CellPhone = "052-3275381";
EMail = "editor@pc.co.il";
EnglishPerson = "Yehuda Konfortes";
FaceBookLink = "";
Fax1 = "03-7330703";
Fax2 = "";
FileNAme = "100050.jpg";
HomeEMail = "";
HomeFax = "";
HomePhone1 = "";
HomePhone2 = "";
PersonID = 100050;
PersonName = "\U05d9\U05d4\U05d5\U05d3\U05d4 \U05e7\U05d5\U05e0\U05e4\U05d5\U05e8\U05d8\U05e1";
Phone1 = "03-7330733";
Phone2 = "";
ZipCode = "";
【问题讨论】:
这不是一个数组。它是一本字典。你想排序什么?或者您只想将所有值添加到数组中? 我想要这样的对象数组(在排序方面不需要帮助)。我希望 Array[0] 成为 address...。 , 手机...,电子邮件... Array[1] 地址...,手机...,电子邮件... 如果我的数组包含字典,所以我想制作字典数组我希望它是可能的!? 我已经更新了我的答案。但我认为你做错了什么。 我不知道为什么我被否决了这不是一个小问题,而且没有重复,我搜索了它们。 【参考方案1】:[defaults objectForKey:@"Person1"];
返回字典而不是数组。
所以你不能使用addObject
方法。
UPD 您可以通过使用单个对象创建数组来解决此崩溃。 这是更新的代码:
NSMutableArray *Array = [[NSMutableArray alloc]init];
id object = [defaults objectForKey:@"Person1"];
Array = [object isKindOfClass:[NSArray class]] ? [object mutableCopy] : [@[object] mutableCopy];
[Array addObject:[PersonsFromSearch objectAtIndex:index]];//crash here :((
[Array moveObjectFromIndex:[Array count] toIndex:0];
【讨论】:
任何可能的解决方案? 日志 [defaults objectForKey:@"Person1"];并说出你想做什么。 我想将此对象添加到数组中,以便对其进行排序等,因为数组中有大约 50 个这样的对象,但我只想存储只有 10 个的收藏夹。跨度> 我不知道你添加的是什么,但我仍然在同一行崩溃,你为什么认为它是错误的?我必须交换第 2 行和第 3 行吗? 它崩溃了,因为 index > 0 并且数组只包含 1 个对象。我认为这是错误的,因为 Parson1 应该是数组,但它是字典。【参考方案2】:NSMutableArray *_arr = [[NSMutableArray alloc]init]; NSDictionary *results = 传递 JSON 值;
[_arr add object:[results objectforkey:@“Address”]]; [_arr 添加对象:[results objectforkey:@“CellPhone”]];
【讨论】:
不,我不想从数据中制作一个数组,我想制作这样的 JSONS 数组。以上是关于将 Json 添加到可变数组会导致崩溃的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Objective C 中形成 JSON 格式的可变数组