我正在使用Swift 5。
为什么NSInvalidArgumentException
时会出现responseValues["CustomerID"] == '<null>'
?
显然if responseValues["CustomerID"] is NSNull
并没有解决问题。应该进行哪些检查以避免NSInvalidArgumentException
self.api.getCustomerId(callback: { getIDResult in if let responseValues = getIDResult["ResponseValues"] { print("GET CUSTOMER ID RESULT") print(responseValues) if responseValues["CustomerID"] is NSNull { print("CustomerID is null") } else{ print("CustomerID is NOT null") } } })
成功的结果
GET CUSTOMER ID RESULT { CustomerID = 403254; } CustomerID is NOT null
遇到空客户ID时崩溃的结果
GET CUSTOMER ID RESULT { CustomerID = "<null>"; }
以下内容的崩溃
019-11-21 12:13:16.819033-0500 MyApp[29412:4207932] -[NSNull _fastCStringContents:]: unrecognized selector sent to instance 0x7fff80615710 2019-11-21 12:13:16.820557-0500 MyApp[29412:4207932] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull _fastCStringContents:]: unrecognized selector sent to instance 0x7fff80615710'
我正在使用Swift5。当responseValues [“ CustomerID”] =='
'时,为什么会发生NSInvalidArgumentException?显然,如果responseValues [“ CustomerID”]是NSNull并不能解决问题。 ...
如果responseValues是字典,则可以执行此操作
if let customerId = responseValues["CustomerID"] as? String { print(customerId) } else { print("customer id isn't available") }
如果您想知道是否为null,则必须更改为Codable