我有一个String
属性作为自定义对象的一部分。当我尝试访问自定义对象上的String
时(当它为空时),程序崩溃。
我可以通过打印自定义对象来判断该字符串的类型为NSNull
。
每次我尝试
if theString == nil
if theString == NSNull()
if theString.isEmpty
程序与[NSNull length]: unrecognized selector sent to instance
我不明白的是它试图致电length
的地方。我想它只会在length
函数上调用isEmpty
,但它也会在其他两个条件上崩溃。
我认为可能是因为自定义对象是在带有NSString
的objective-c中创建的,但是当我尝试将String
转换为NSString
时,这也会崩溃,所以我不确定该怎么做。
谢谢!
答案 0 :(得分:3)
我不喜欢回答我自己的问题,但是对于它的价值,如果Obj-C属性是NSNull
并且你试图在Swift中解包它,它会给你一个错误。
我通过检查我的自定义对象(在Obj-C模型中)修复此问题,如果属性为NSNull
,则将该属性设置为nil,如下所示:
if (theString == (id)[NSNull null]){
theString = nil
}