首先,我使用的是xcode版本13.2.1,当我试图在terminal / xcode中构建我的ios应用程序时,我遇到了一个问题,下面是错误响应:
x1c 0d1x的数据
/Users/user/.pubcache/hosted/pub.dev/shared_preferences_foundation-2.3.0/ios/Classes/SharedPreferencesPlugin.swift:58:22:条件中的变量绑定需要初始化器
下面是获取错误的完整函数:
func getAllPrefs(prefix: String, allowList: [String]?) -> [String: Any] {
var filteredPrefs: [String: Any] = [:]
var allowSet: Set<String>?;
if let allowList {
allowSet = Set(allowList)
}
if let appDomain = Bundle.main.bundleIdentifier,
let prefs = UserDefaults.standard.persistentDomain(forName: appDomain)
{
for (key, value) in prefs where (key.hasPrefix(prefix) && (allowSet == nil || allowSet!.contains(key))) {
filteredPrefs[key] = value
}
}
return filteredPrefs
}
字符串
错误来自于这个特定的函数:
if let allowList {
allowSet = Set(allowList)
}
型
我从来没有使用过if let函数,所以我不知道如何解决这个swift错误。有人能告诉我怎么解决这个问题吗?
2条答案
按热度按时间0ejtzxu11#
显然,这已经在较新版本的swift中得到了修复,但在这里,我将
if
替换为字符串
或者更好
型
第三个选择:)
型
dddzy1tm2#
您正在尝试使用“
if let
shorthand for shadowing an existing optional variable”功能。这在Swift 5.7中实现。您使用的Xcode版本- 13.2 -仅支持Swift 5.5.2。请参阅:https://swiftversion.net/支持Swift 5.7的最低Xcode版本是14.0。您可以更新到该版本以修复错误。
你也可以重写代码。除了Joakim Danielson的建议,你还可以做:
字符串