gpt4 book ai didi

swift - 无法将 [String : String? ] 类型的值转换为预期的参数类型 [String : String]

转载 作者:行者123 更新时间:2023-11-30 10:05:29 36 4
gpt4 key购买 nike

我正在尝试将数据保存到我的 plist 文件中,其中包含字符串数组的定义。我的plist - enter image description here

我将数据写入 plist 的代码是 --

let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory,.UserDomainMask,true) as NSArray

let documentsDirectory = paths.objectAtIndex(0) as! NSString

let path= documentsDirectory.stringByAppendingPathComponent("authors.plist")

let fileManager = NSFileManager.defaultManager( )

var plistArray = NSArray(contentsOfFile: path) as! [Dictionary<String , String>]

var addItem: Dictionary = ["link": linkBook.text , "Cover": cover.text , "title" : titlePage.text , "year" : year.text , "isbn" : isbn.text]

plistArray.append(addItem)
// I am getting the error here

(plistArray as NSArray).writeToFile(path, atomically: true)

最佳答案

我的猜测是 linkBookcovertitlePageyearisbn 全部代表 UI 中的文本字段?其中一个或多个事物的 text 属性具有可选字符串类型 (String?)。 plistArray 变量的类型为 [String, String] – 键和值都不能为 nil。

从根本上来说,您需要回答这样的问题:如果上述其中一项的 text 属性为 nil,该怎么办。它们可能永远不为空,在这种情况下,您可以向它们添加感叹号 linkBook.text!cover.text! 等。

但是,如果你这样做,并且其中任何一个为零,就会导致崩溃。

我怀疑您想要做的是使用 ?? 运算符。将您的字典设置为:

var addItem: Dictionary = ["link": linkBook.text ?? "", 
"Cover": cover.text ?? "",
"title" : titlePage.text ?? "",
"year" : year.text ?? "",
"isbn" : isbn.text ?? ""]

这样,如果任何一个 nil 那么你将在你的 plist 中得到空字符串。

关于swift - 无法将 [String : String? ] 类型的值转换为预期的参数类型 [String : String],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36299856/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com