【问题标题】:unrecognized selector sent to instance happening on iOS 12 only无法识别的选择器发送到仅在 iOS 12 上发生的实例
【发布时间】:2020-09-11 03:09:07
【问题描述】:

我有一个奇怪的问题,即仅在一台 iOS 12 版本的设备上出现以下错误。为什么这只发生在这个操作系统上而不是其他操作系统上?

错误

Fatal Exception: NSInvalidArgumentException
-[NSTaggedPointerString stringValue]: unrecognized selector sent to instance 0xe4d38ae23d3589b7

JSON

"Name": "A",
        "Teams": [
            {
                "Number": "3",

代码

poolTeam.number = [NSString stringWithFormat:@"%@%@", [poolJson objectForKey:@"Name"], [[teamJson objectForKey:@"Number"] stringValue]];

以下是将响应转换为 JSON 的代码

- (id)parseResponse {

    @try
    {
        NSError *error = nil;
        NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

        return jsonDict;
    }
    @catch(NSException *ex) {
        return nil;
    }
}

【问题讨论】:

  • 展示你是如何创建poolJsonteamJson的。
  • 我添加了将响应转换为 NSDictionary 的代码,然后我开始阅读
  • 看来[teamJson objectForKey:@"Number"]已经是NSString了,你在上面调用stringValue。为什么只在 iOS12 中,这是一个很好的问题。你确定JSON是一样的吗?当它是 NSNumber 有时是 NSString 时会不会是个问题?因为根据你的 JSON,它是一个 NSString 是完全正常的......
  • 所以我使用字符串和整数类型的 json number 测试了 iOS 13,并且都运行良好。因此,iOS 12 和 stringValue 出现了问题。
  • 在 ios 13 上的工作方式相同:-[NSTaggedPointerString stringValue]: unrecognized selector ????‍♂️

标签: ios json objective-c iphone


【解决方案1】:

如果您在 NSString 上使用 [stringValue],则此错误仅在 iOS 12.x 中发生。删除多余的演员表来修复。

【讨论】:

    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    相关资源
    最近更新 更多