我正在尝试将数据保存到我的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)
答案 0 :(得分:1)
我的猜测是linkBook
,cover
,titlePage
,year
和isbn
都代表了用户界面中的文字字段?这些东西中的一个或多个的text
属性具有可选字符串类型(String?
)。 plistArray
变量属于[String, String]
类型 - 键和值都不能为零。
从根本上说,如果上述某项内容的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中的空字符串。
答案 1 :(得分:0)
textfield.text是可选的。所以你应该先解开它。
var addItem: Dictionary = ["link": linkBook.text! , "Cover": cover.text! , "title" : titlePage.text! , "year" : year.text! , "isbn" : isbn.text!]