【问题标题】:'NSInvalidArgumentException', reason: '-[NSTaggedPointerString objectForKey:]: unrecognized selector sent to instance 0xa000000617461644''NSInvalidArgumentException',原因:'-[NSTaggedPointerString objectForKey:]:无法识别的选择器发送到实例 0xa000000617461644'
【发布时间】:2018-09-28 15:58:02
【问题描述】:

我正在开发一个简单的应用程序,它可以获取 json 数据并存储到不同的变量中 这是我获取json数据的代码

if ([method isEqualToString:@"getmobiledata"]){

       defaultDict = [[NSMutableDictionary alloc]init];
         [defaultDict addEntriesFromDictionary:[NSJSONSerialization JSONObjectWithData:[data dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil]];
         mobile = [defaultDict objectForKey:@"data"];

    }

这是我儿子的数据:

{
    data =     (
                {
            id = 1;
            package = 819MB;
            rate = "$1";
            type = Somnet;
        },
                {
            id = 2;
            package = "1,638MB";
            rate = "$2";
            type = Somnet;
        },

    );
}

这里是将 json 解析为 nstring :

for(NSDictionary *getData in mobile){
         NSString *idno  = [getData objectForKey : @"id"];
         NSString *package = [getData objectForKey :@"package"];
         NSString *rate = [getData objectForKey :@"rate"];
         NSString *type = [getData objectForKey :@"type"];

    }

请帮我解决这个问题

【问题讨论】:

  • 无效的 json 格式
  • 请帮我解决一下
  • 错误是说在某些时候对象是NSString,而不是您可能认为的NSDictionary。这很奇怪,如果你打印的是defaultDict,你给出的部分不应该那样做。调试,找到该行,并在这种情况下给我们变量。

标签: ios objective-c json


【解决方案1】:

与系统属性ID同名的数据模型会发生碰撞,会发生碰撞崩溃。 您可以像这样使用新 ID:

- (void)setValue:(id)value forUndefinedKey:(NSString *)key { if([key isEqualToString:@"id"]) self.NewId = value; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多