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

我有这个代码(从另一种语言移植,因此有一些不同的命名约定,但现在请忍受这个)

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字符串

解决方法

您应该声明一个实际的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
}

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...