Arrays Swift:线程1:信号SIGABRT(获取任何对象的子对象)
我的代码:Arrays Swift:线程1:信号SIGABRT(获取任何对象的子对象),arrays,swift,anyobject,Arrays,Swift,Anyobject,我的代码: let userData = result["user"] as? AnyObject // { test="x"; id=0; phone="none" } var id = Int(userData?["id"] as? String ?? String(userData?["id"] as? String ?? "0"))! 编译后,我出现以下错误: 2018-07-16 18:21:02.747944+0430 Matap[1550:415553]-[\uu nscfn编
let userData = result["user"] as? AnyObject // { test="x"; id=0; phone="none" }
var id = Int(userData?["id"] as? String ?? String(userData?["id"] as? String ?? "0"))!
编译后,我出现以下错误:
2018-07-16 18:21:02.747944+0430 Matap[1550:415553]-[\uu nscfn编号
长度]:发送到实例0xb000000000000003的无法识别的选择器
2018-07-16 18:21:02.748116+0430 Matap[1550:415553]*终止应用程序
由于未捕获的异常“NSInvalidArgumentException”,原因:
'-[\uu NSCFNumber length]:发送到实例的选择器无法识别
0xb000000000000003'
*第一次抛出调用堆栈:(0x183c82d8c 0x182e3c5ec 0x183c90098 0x183c885c8 0x183b6e41c 0x105d9d5f4 0x105d36c68 0x106384478
0x1020a4aa0 0x10209f6cc 0x10208ac00 0x10676d1dc 0x10676d19c
0x106771d2c 0x183c2b070 0x183c28bc8 0x183b48da8 0x185b2d020
0x18db65758 0x1020c9098 0x1835d9fc0)libc++abi.dylib:终止于
NSException类型的未捕获异常
id是
NSNumber
var id = (userData?["id"] as! NSNumber).stringValue // seems you consider it a string
不是result[“user”]
,根据输出,它显然是一个字典(AnyObject
)[String:Any]
是一个userData[“id”]
Int
一行代码似乎很酷,但有时最好多使用几行代码以提高可读性
-[\uu NSCFNumber length]:无法识别的选择器
,这是一个众所周知的错误。在某种程度上,您认为您正在使用一个字符串对象,但实际上它是一个NSNumber
one。为什么你要做两次userData?[“id”]as?字符串
?括号问题?相反,一些测试在一行中进行了那么多,一步一步,用if/else一行一行地进行,然后找出是哪一个导致了问题?我不能用你的代码重现同样的崩溃。您确定崩溃发生在您显示的任何一行上吗?我再次遇到此错误:2018-07-16 19:16:12.554696+0430 Matap[733:234358]-[\uu NSCFNumber length]:未识别的选择器发送到实例0xb000000000000003 2018-07-16 19:16:12.556471+0430 Matap[733:234358]***由于未捕获异常“NSInvalidArgumentException”而终止应用程序,原因:'-[\uu NSCFNumber length]:发送到实例0xb000000000000003的无法识别的选择器***第一次抛出调用堆栈:(0x182bd2d8c 0x181d8c5ec 0x182be0098)libc++abi.dylib:如果他将NSException类型的未捕获异常转换为AnyObject@Sh_Khan这确实会有所不同。对AnyObject
的转换连接到Objective-C运行时,在这种情况下完全不需要。在Swift中,一个明显的JSON对象是Any
,但我们鼓励您始终将对象转换为最特定的类型。我的意思是结果不会更好approach@Sh_Khan对我来说,更好的方法总是比结果更重要