从字符串到字符串的条件转换总是在 swift 中成功 3
Conditional cast from string to string always succeds in swift 3
func resetUserDefaults() {
let userDefaults = UserDefaults.standard
let dict = userDefaults.dictionaryRepresentation()
for (key,_) in dict {
if let key = key as? String {
userDefaults.removeObject(forKey: key)
} else {
#if DEBUG
NSLog("\(key)")
#endif
}
}
}
我收到此警告。谁能建议我如何避免这种警告
无需将某些内容强制转换为(编译器)已知的类型。
只需删除整个条件并直接使用您的 key
。
UserDefaults
中的所有键都必须是 String
类型。所以 key
被声明为 String
。因此,尝试将其转换为 String
是毫无意义的。因此警告。
您只需要:
func resetUserDefaults() {
let userDefaults = UserDefaults.standard
let dict = userDefaults.dictionaryRepresentation()
for (key,_) in dict {
userDefaults.removeObject(forKey: key)
}
}
它总是会显示警告,因为 dictionaryRepresentation() return [String : Any].
所以当你从字符串转换为字符串时,它肯定会显示警告。
有关更多信息,请参阅此 -> https://developer.apple.com/documentation/foundation/userdefaults/1415919-dictionaryrepresentation
由于 UserDefault 中的键应该是字符串类型,将键转换为字符串是没有用的,因此您会收到此警告。
func resetUserDefaults() {
let userDefaults = UserDefaults.standard
let dict = userDefaults.dictionaryRepresentation()
for (key, _) in dict {
userDefaults.removeObject(forKey: key)
}
}
我在 Swift 5 中遇到了与私有函数相同的问题,我找到了适合我的解决方案。
解决方案是将值更改为可选。
我在我要找的类型后面加了一个问号。 (作为字符串“?”)
你可以在这里看到一个例子:
private func doSomeThing(completion: @escaping (String) -> ()) {
let Something = somethingElse;
if let anoterThing = something as String?{
completion(anoterThing)
}else{
completion("Error at private func doSomeThing")
}
}
您可以在此处找到更多信息:
https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html
Swift: difference as String? vs. as? String
Downcasting in Swift with as and as?
此致
func resetUserDefaults() {
let userDefaults = UserDefaults.standard
let dict = userDefaults.dictionaryRepresentation()
for (key,_) in dict {
if let key = key as? String {
userDefaults.removeObject(forKey: key)
} else {
#if DEBUG
NSLog("\(key)")
#endif
}
}
}
我收到此警告。谁能建议我如何避免这种警告
无需将某些内容强制转换为(编译器)已知的类型。
只需删除整个条件并直接使用您的 key
。
UserDefaults
中的所有键都必须是 String
类型。所以 key
被声明为 String
。因此,尝试将其转换为 String
是毫无意义的。因此警告。
您只需要:
func resetUserDefaults() {
let userDefaults = UserDefaults.standard
let dict = userDefaults.dictionaryRepresentation()
for (key,_) in dict {
userDefaults.removeObject(forKey: key)
}
}
它总是会显示警告,因为 dictionaryRepresentation() return [String : Any].
所以当你从字符串转换为字符串时,它肯定会显示警告。 有关更多信息,请参阅此 -> https://developer.apple.com/documentation/foundation/userdefaults/1415919-dictionaryrepresentation
由于 UserDefault 中的键应该是字符串类型,将键转换为字符串是没有用的,因此您会收到此警告。
func resetUserDefaults() {
let userDefaults = UserDefaults.standard
let dict = userDefaults.dictionaryRepresentation()
for (key, _) in dict {
userDefaults.removeObject(forKey: key)
}
}
我在 Swift 5 中遇到了与私有函数相同的问题,我找到了适合我的解决方案。
解决方案是将值更改为可选。 我在我要找的类型后面加了一个问号。 (作为字符串“?”)
你可以在这里看到一个例子:
private func doSomeThing(completion: @escaping (String) -> ()) {
let Something = somethingElse;
if let anoterThing = something as String?{
completion(anoterThing)
}else{
completion("Error at private func doSomeThing")
}
}
您可以在此处找到更多信息:
https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html
Swift: difference as String? vs. as? String
Downcasting in Swift with as and as?
此致