[__NSArrayM intValue]:发送到实例的无法识别的选择器

Posted

技术标签:

【中文标题】[__NSArrayM intValue]:发送到实例的无法识别的选择器【英文标题】:[__NSArrayM intValue]: unrecognized selector sent to instance 【发布时间】:2015-06-19 04:59:33 【问题描述】:

我正在使用 MagicalRecord 从我的服务器中提取一个 json 文件。除了设备对象外,我所有的对象都可以正常加载。这是 JSON 文件的日志

    "Equipment":[
  
    "equipmentID":1,
    "equipmentName":"Barbell",
    "equipmentDescription":"Barbell"
  
]

我的设备类是一个非常基本的设置

@property (nonatomic, retain) NSNumber * equipmentID;
@property (nonatomic, retain) NSString * equipmentName;
@property (nonatomic, retain) NSString * equipmentDescription;

在数据模型中,设备 ID 为整数 16。如果将其更改为整数 64,则会出现此错误。

[__NSArrayM longLongValue]: unrecognized selector sent to instance

我不明白是什么问题,格式与同一个 JSON 文件中的其他对象一致。设备ID 显然是一个intValue,设备类设置为NSNumber,设备ID 为整数。

有什么帮助吗? Magical Record 有问题吗?

【问题讨论】:

这意味着您的数据是NSMutableArray 而不是NSNumber。检查您的数据是否相同.. 嗨。能否请您输入您尝试解析 json 字符串的代码...以便我们可以轻松识别实际问题。 @iphonic 但是这一行显示它是一个 NSNumber,它怎么会检测到它是 NSMutableArray? “设备ID”:1 【参考方案1】:

你需要这样写,

self.equipmentID = [NSNumber numberWithInt:[[[[myDic objectForKey:@"Equipment"] objectAtIndex:0] objectForKey:@"equipmentID"] intValue]]; // Or floatValue or whatever you need.
self.equipmentName = [[[myDic objectForKey:@"Equipment"] objectAtIndex:0] objectForKey:@"equipmentName"]; 
self.equipmentDescription = [[[myDic objectForKey:@"Equipment"] objectAtIndex:0] objectForKey:@"equipmentDescription"]; 

【讨论】:

【参考方案2】:

所以事实证明我的 json 是一个数组格式(应该从括号中知道)。我使用 MR_importFromObject 而不是 MR_importFromArray。我太傻了。

【讨论】:

以上是关于[__NSArrayM intValue]:发送到实例的无法识别的选择器的主要内容,如果未能解决你的问题,请参考以下文章

-[__NSArrayM 长度]:无法识别的选择器发送到实例 0x145ecca0

目标c [__NSArrayM objectForKey:]:发送到实例的无法识别的选择器

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[__NSArrayM itemName]:无法识别的选择器发送到实例

领域:获取 -[__NSArrayM UTF8String]:无法识别的选择器发送到实例

Xcode -[__NSArrayM isEqualToString:]:无法识别的选择器发送到实例 0x7a1248d0 - 如何修复?

-[__NSDictionaryM intValue]:无法识别的选择器发送到实例 0x13f26a60