首页 > 解决方案 > Swift Userdefaults 将 String 转换为 __NSCFString

问题描述

我有保存 in 字典的[String: Any]代码 UserDefaults。检索String时更改为__NSCFString。我Mixpanel用来跟踪事件并将这个字典作为事件属性发送。现在问题__NSCFString不是有效的MixpanelType,所以 Mixpanel 正在丢弃我的字典。

问题:

这是我正在使用的代码

var mixpanelProperties: [String: Any] {
    get { defaults.dictionary(forKey: "\(#function)") ?? [:] }
    set { defaults.set(newValue, forKey: "\(#function)") }
}

mixpanelProperties = ["a-key": "value for the key"]
let prop = mixpanelProperties
print("Type of: \(String(describing: prop["a-key"]))")

阿斯达德

标签: swiftnsuserdefaultsmixpanelnscfstring

解决方案


MacOS 和 iOS 使用各种不同的类来表示字符串,它们都是兼容的。x 作为?无论 x 的具体类是什么,字符串都应该可以工作。除非你使用明确检查你不应该做的类的代码。


推荐阅读