gpt4 book ai didi

xcode - NSJSONSerialization 导致 EXC_BAD_ACCESS

转载 作者:行者123 更新时间:2023-12-04 05:32:33 32 4
gpt4 key购买 nike

目前我正在编写一个应用程序(目标 iOS 6,启用 ARC),它使用 JSON 进行数据传输,使用核心数据进行持久存储。 JSON 数据由 PHP 脚本通过 json_encode 从 MySQL 数据库中生成。

我的问题是,对于某些表中的数据,以下代码失败:

- (NSDictionary *)executeFetch:(NSString *)query
{
NSURL *requesturl = [NSURL URLWithString:[query stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

NSError *dataError = nil;
self.jsonData = [NSData dataWithContentsOfURL:requesturl options:kNilOptions error:&dataError];

NSError *error = nil;
self.jsonSerializationResult = [NSJSONSerialization JSONObjectWithData:self.jsonData options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:&error];

return self.jsonSerializationResult;

}

程序总是崩溃,并在上面说 self.jsonSerializationResult 和 Instruments 说检测到僵尸的行上出现 EXC_BAD_ACCESS 错误。我知道这意味着我向其发送消息的某个对象为零,但我不知道如何修复它......这就是 Instruments 所说的:
#   Address Category    Event Type  RefCt   Timestamp   Size    Responsible Library Responsible Caller
0 0xa1b8a70 CFString (mutable) Malloc 1 00:01.603.081 32 Foundation -[NSPlaceholderMutableString initWithBytesNoCopy:length:encoding:freeWhenDone:]
1 0xa1b8a70 CFString (mutable) Release 0 00:01.603.137 0 Foundation newJSONValue
2 0xa1b8a70 CFString (mutable) Zombie -1 00:01.603.259 0 Foundation newJSONString

我的程序适用于除此之外的所有 JSON 输出:
{
"termin":[
{
"termin_id":"17",
"veranstaltung_id":"20",
"beginn":"2012-09-28 17:00:00",
"ende":"2012-09-28 18:00:00",
"freie_pl\u00e4tze":null
},
{
"termin_id":"18",
"veranstaltung_id":"26",
"beginn":"2012-09-28 19:00:00",
"ende":"2012-09-28 20:00:00",
"freie_pl\u00e4tze":null
},
{
"termin_id":"19",
"veranstaltung_id":"26",
"beginn":"2012-09-28 21:00:00",
"ende":"2012-09-28 22:00:00",
"freie_pl\u00e4tze":null
},
{
"termin_id":"20",
"veranstaltung_id":"46",
"beginn":"2012-09-28 19:00:00",
"ende":"2012-09-28 20:00:00",
"freie_pl\u00e4tze":null
},
{
"termin_id":"24",
"veranstaltung_id":"66",
"beginn":"2012-09-28 22:00:00",
"ende":"2012-09-28 22:30:00",
"freie_pl\u00e4tze":"120"
}
]
}

我想到了一些可能的错误来源,但似乎没有一个是负责任的:
  • jsonData 或 jsonSerializationResult 可能为零:它们不是
  • PHP 生成了无效的 JSON:使用验证器进行检查
  • null 值:其他表没有问题

  • 有人有想法吗?

    最佳答案

    它看起来像是 NSJSONSerialization 的错误/缺点.该问题是由转义的 unicode 字符( freie_pl\u00e4tze 而不是 freie_plätze )引起的。你有两个选择——

  • 将转义的 Unicode 转换为真正的 Unicode 字符。试试 this SO answer
  • 使用另一个 JSON 引擎,例如 JSONKit . JSONKit还声称比 NSJSONSerialization 的性能更高.
  • 关于xcode - NSJSONSerialization 导致 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12842481/

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