我正在尝试检查字符串是否为空,如果不是空的,我想在文本字段(outUrl.text)中显示

 let storage = UserDefaults.standard
 var mainsite = storage.object(forKey:"sitestring")  ?? ""

        if (mainsite != "") {
            outUrl.text = mainsite
        }

但我有个错误:
错误:!=不能应用于字符串类型的操作数和任何
如何检查字符串是否不为空?

最佳答案

Objective-C API-[UserDefaults obejectForKey:]返回的结果是id类型,以便容纳各种类型的对象(NSStringNSNumber等)。当从Swift代码访问时,这将变为Any?(任何类型,可能nil)。
如果您知道存储的值确实是一个字符串,则需要在比较之前尝试强制转换它:!=类型StringAny?类型的值之间的值默认不定义!那是什么意思:

var mainsite = storage.object(forKey:"sitestring") as? String ?? ""

这样,您要么得到一个String值(如果转换成功),要么得到一个空字符串(如果转换失败,因为键“sitestring”没有对象,或者不能转换为String值)。

10-07 19:56
查看更多