我正在尝试检查字符串是否为空,如果不是空的,我想在文本字段(outUrl.text)中显示
let storage = UserDefaults.standard
var mainsite = storage.object(forKey:"sitestring") ?? ""
if (mainsite != "") {
outUrl.text = mainsite
}
但我有个错误:
错误:!=不能应用于字符串类型的操作数和任何
如何检查字符串是否不为空?
最佳答案
Objective-C API-[UserDefaults obejectForKey:]
返回的结果是id
类型,以便容纳各种类型的对象(NSString
、NSNumber
等)。当从Swift代码访问时,这将变为Any?
(任何类型,可能nil
)。
如果您知道存储的值确实是一个字符串,则需要在比较之前尝试强制转换它:!=
类型String
和Any?
类型的值之间的值默认不定义!那是什么意思:
var mainsite = storage.object(forKey:"sitestring") as? String ?? ""
这样,您要么得到一个
String
值(如果转换成功),要么得到一个空字符串(如果转换失败,因为键“sitestring”没有对象,或者不能转换为String
值)。