我正在向MonoMethodDesc* typeDesc = mono_method_desc_new("EnumTest.EnumClass:SetType(EnumClass/HelloType)", false);
MonoMethod* typeMethod = mono_method_desc_search_in_class(typeDesc, enumClass);
写extension
,以便在我提供Dictionary
密钥时,只有String
才会给我String
与键关联的值为非零且非空。
extension Dictionary {
subscript(key: String) -> String? {
if let string = super.subscript(key) {
if string.isEmpty == false {
return string
}
}
return nil
}
}
但是,在if let string = super.subscript(key) {
行,我收到以下编译错误,我不知道这意味着什么 - Google的结果也没有解释它:
下标元素类型的预期
->
我这样做是因为我正在使用返回JSON的API,其中键的值可能是空字符串 - 这是我们的要求对应用程序的无效值,因此,和零一样好。
当然,漫长的路可行,但我正在寻找一种简化方法。
if let value = dict["key"] as? String {
if value.isEmpty == false {
// The value is non-nil and non-empty.
}
}
答案 0 :(得分:1)
你会认为这是非常愚蠢的,但我的建议是:或多或少地做你正在做的事情,但将其封装为一个单独的功能,而不是试图处理定义一个新的含义subscript
:
extension Dictionary {
func nes(key:Key) -> String? {
var result : String? = nil
if let s = self[key] as? String {
if !s.isEmpty {
result = s
}
}
return result
}
}
(nes
代表“非空字符串”。)
现在称之为d.nes("foo")
。