2016-03-30 39 views
0

Verileri, dizi dizilerinin tanımını içeren plist dosyasına kaydetmeye çalışıyorum. Benim Plist - enter image description here[String: String?] Türünün beklenen argüman türüne değeri dönüştürülemiyor [String: String]

benim plist veri yazmak için My kodudur -

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) 

cevap

1

Benim tahminim linkBook, cover, titlePage, year ve isbn tüm arayüzünde metin alanlarını temsil olmasıdır? text mülkünün bir veya daha fazlasının özelliği isteğe bağlı bir Dize (String?) türüne sahiptir. plistArray değişkeni [String, String] tipindedir - ne anahtarlar ne de değerler sıfır olamaz.

Temelde, yukarıda bahsedilen şeylerden birinin nil numaralı özelliğinin text özelliğiyle yapılması durumunda ne yapmanız gerektiği sorusunu yanıtlamanız gerekir. Bu sen onlara ünlem işareti ekleyebilirsiniz ki bu durumda asla boş olduğu durumu olabilir linkBook.text! ve cover.text! vb

sen, ancak ve içlerinden herhangi birinin sıfır olduğu bir kazadan yol açacaktır emin olduğunu ise .

Bunun yerine, yapmak istediğiniz şeyin ?? işlecini kullanmaktan şüpheleniyorum. gibi sözlüğünü ayarlayın: Böylece

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

hiç herhangi nil o zaman plist boş dize alacak ise.

0

textfield.text isteğe bağlıdır. Yani önce onu açmalısın. `Xxx.text` özelliklerden herhangi birini hiç nil ise bu değişiklikle birlikte, başvurunuz çökmesine edeceğini

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

+0

Not. –

+0

Anladığım kadarıyla çökecek ama çökmeleri önlemek için uygun önlemleri alabiliyoruz. Sadece sözlüğü, yalnızca metin alanı boş değilse oluştur. –