[英]Save an array to file in Swift
我正在構建一個應用程序,它將:
現在我設法實現連接檢查,接收JSON,將數據放入數組。
收到的JSON看起來像這樣:
然后我使用以下代碼安靜來創建一個字典數組來存儲JSON數據。 選擇了一系列字典,以便能夠過濾它,然后使用值的鍵來達到值。
var rates = [ExchangeRates]() //instance of class Rate
var bnkDct = ["bank": "", "currency": "","buyrate": "", "sellrate": ""] //template
var indx : Int = 0 //index for iteration
for rate in jsonData{
let rate = ExchangeRates(data: rate as! NSDictionary)
rates.append(rate)
bnkDct["bank"] = rates[indx].bank
bnkDct["buyrate"] = rates[indx].buyRate
bnkDct["sellrate"] = rates[indx].sellRate
bnkDct["currency"] = rates[indx].currency
self.bankDict.append(bnkDct)
indx += 1
}
在此之后,我有一個看起來像這樣的數組:
現在我想將這個數組保存到一個文件中,顯然能夠讀取它。
我試圖用這樣的東西寫數據:
let filePath = NSTemporaryDirectory() + "MyData.dat"
self.bankDict.writeToFile(filePath, automatically: true)
但它給了我一個錯誤:“[(Dictionary)]沒有writeToFile成員”。
另外,我不能將它作為NSDictionary轉換為使用相同的writeToFile方法。
我還試圖用這樣的東西寫數據:
let filePath = NSTemporaryDirectory() + "MyData.dat"
NSKeyedArchiver.archiveRootObject(self.bankDict, toFile: filePath)
它創建一個奇怪的編碼文件:
當我試圖閱讀它時:
let newDictionary = NSKeyedUnarchiver.unarchiveObjectWithFile(filePath) as! [Dictionary <String,AnyObject> ]
我收到錯誤:“致命錯誤:在展開Optional值時意外發現nil”
調試器也顯示非常“有趣”的東西:
newDictionary變量有很多值。 數組中有40個字典是用文件寫的。
任何人都可以建議我在這里做錯了什么,或者我在這里使用不好的做法?
除非對象圖中的每個對象都是屬性列表對象,否則不能使用數組或字典writeToFile方法。 (一小部分類型。查找。)
您的數組中有自定義類ExchangeRates。
同樣,除非對象圖中的每個對象都符合NSCoding協議,否則無法使用NSKeyedArchiver保存文件。 如果您將NSCoding的支持添加到您的ExchangeRates類,那么您的第二種方法將起作用,但文件內容將不是人類可讀的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.