如何在Swift 5中检查 并避免'NSInvalidArgumentException'?] >> 我正在使用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

问题描述 投票:0回答:1

我正在使用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并不能解决问题。 ...

swift null swifty-json
1个回答
0
投票

如果responseValues是字典,则可以执行此操作

if let customerId = responseValues["CustomerID"] as? String
{
   print(customerId)
}
else
{
   print("customer id isn't available")
}

如果您想知道是否为null,则必须更改为Codable

© www.soinside.com 2019 - 2024. All rights reserved.