Swift iOS NSDictionary setValue崩溃 - 但为什么呢?

时间:2016-01-28 15:04:52

标签: ios swift nsdictionary

我有这个代码(从另一种语言移植,因此有一些不同的命名约定,但请暂时解决此问题)

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的调用都会抛出一个错误(据我所知无意义)并退出app(Xcode编辑器被带到类AppDelegate:UIResponder,UIApplicationDelegate < /强>)

我猜我使用NSDictionary错了?我试图在文本文件中读取每行是key = value strings

1 个答案:

答案 0 :(得分:6)

您应该声明一个实际的NSMutableDictionary而不是强制转换为NSDictionary。

你可以使用比setValue(实际应该是setObject)更简单的下标:

var FDefaultsList = NSMutableDictionary()
let TmpKey: String = "a"
let TmpValue: String = "b"
if TmpKey != "" && TmpValue != "" {
    FDefaultsList[TmpValue] = TmpKey
}

更多&#34; Swifty&#34;版本可能是:

var defaultsList = [String:String]()
let tmpKey = "a"
let tmpValue = "b"
if !tmpKey.isEmpty && !tmpValue.isEmpty {
    defaultsList[tmpValue] = tmpKey
}