Swift iOS NSDictionary setValue 崩溃 - 但为什么?
Swift iOS NSDictionary setValue crash - but why?
我有这段代码(从另一种语言移植而来,因此命名约定有点不同,但请暂时忍耐)
var FDefaultsList: NSDictionary = [String:String]();
let TmpKey: String = TmpKeyValue[0];
let TmpValue: String = TmpKeyValue[1];
if (TmpKey != "") && (TmpValue != "") {
//let TmpAnyObjectValue: AnyObject? = TmpValue;
//FDefaultsList.setValue(TmpAnyObjectValue, forKey: TmpKey);
FDefaultsList.setValue(TmpValue, forKey: TmpKey);
}
但是,无论我使用哪种 setValue 变体,对 setValue 的调用都会引发错误(据我所知没有意义)并退出应用程序(Xcode 编辑器被带到 class AppDelegate: UIResponder, UIApplicationDelegate)
我猜我用错了NSDictionary?我正在尝试读取一个文本文件,其中每一行都是 key=value strings
您应该声明一个实际的 NSMutableDictionary,而不是转换为 NSDictionary。
你可以使用比setValue
更简单的下标(实际上应该是setObject
):
var FDefaultsList = NSMutableDictionary()
let TmpKey: String = "a"
let TmpValue: String = "b"
if TmpKey != "" && TmpValue != "" {
FDefaultsList[TmpValue] = TmpKey
}
更 "Swifty" 的版本可以是:
var defaultsList = [String:String]()
let tmpKey = "a"
let tmpValue = "b"
if !tmpKey.isEmpty && !tmpValue.isEmpty {
defaultsList[tmpValue] = tmpKey
}
我有这段代码(从另一种语言移植而来,因此命名约定有点不同,但请暂时忍耐)
var FDefaultsList: NSDictionary = [String:String]();
let TmpKey: String = TmpKeyValue[0];
let TmpValue: String = TmpKeyValue[1];
if (TmpKey != "") && (TmpValue != "") {
//let TmpAnyObjectValue: AnyObject? = TmpValue;
//FDefaultsList.setValue(TmpAnyObjectValue, forKey: TmpKey);
FDefaultsList.setValue(TmpValue, forKey: TmpKey);
}
但是,无论我使用哪种 setValue 变体,对 setValue 的调用都会引发错误(据我所知没有意义)并退出应用程序(Xcode 编辑器被带到 class AppDelegate: UIResponder, UIApplicationDelegate)
我猜我用错了NSDictionary?我正在尝试读取一个文本文件,其中每一行都是 key=value strings
您应该声明一个实际的 NSMutableDictionary,而不是转换为 NSDictionary。
你可以使用比setValue
更简单的下标(实际上应该是setObject
):
var FDefaultsList = NSMutableDictionary()
let TmpKey: String = "a"
let TmpValue: String = "b"
if TmpKey != "" && TmpValue != "" {
FDefaultsList[TmpValue] = TmpKey
}
更 "Swifty" 的版本可以是:
var defaultsList = [String:String]()
let tmpKey = "a"
let tmpValue = "b"
if !tmpKey.isEmpty && !tmpValue.isEmpty {
defaultsList[tmpValue] = tmpKey
}