【发布时间】:2016-01-28 15:04:52
【问题描述】:
我有这个代码(从另一种语言移植,因此命名约定有点不同,但请暂时忍耐一下)
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 字符串
【问题讨论】:
-
使用 FDefaultsList[TmpValue] = TmpKey & 只使用来自 swift 的 Dictionary 而不是 NSDictionary。
-
您应该包含错误消息,即使它对您毫无意义。使用
setObject而不是setValue,如果你想编辑它应该是NSMutableDictionary -
我想要一个(可变)字典,我可以在其中读/写字符串键/值。我将尝试阅读可可/obj-c 字典(?)与 swift 字典的优缺点。
-
@Tom swift Dictionary 是可变的,你只需要将其定义为
var而不是let -
基本上不要使用
setValue:forKey:,除非你真的需要KVC。要为key设置value,请始终使用setObject:forKey:或键下标。
标签: ios swift nsdictionary