我有問題想弄清楚如何使用NSUserDefaults保存我的「RiskEntry」類型的字符串。我已經通過其他一些帖子,但不知何故,我仍然無法解決這個問題。使用NSUserDefaults和結構類型數組
讓我來解釋一下下面的代碼吧:我在下面的代碼片段中從我的類CustomCell中獲取一些數據。在這裏,我首先檢查一個「標識符」要更新哪個數組,使用新的數組值「結果」。
它一切正常,更新後的數組存儲在riskEntry中。 但是,我現在無法解決如何使用NSUserDefaults進行存儲。當我嘗試用例如riskItemDefaults.set(riskEntry, forKey: "riskItem")
我收到一個異常錯誤。
任何想法我在做什麼錯在這裏?
SWIFT3(我刪除了這個問題不相關的所有代碼)
class: RiskPlan: UIViewController, UITableViewDelegate, UITableViewDataSource, CustomCellUpdaterDelegate {
var riskEntry = [RiskEntry]()
var riskItemDefaults = UserDefaults.standard
// ------ start of delegate function (receiving from CustomCell) ---------
func transferData(consequencesTranferred: String, identifier: String) {
if let index = riskEntry.index(where: {$0.title as String == identifier}) {
riskEntry[index].consequences = consequencesTranferred
} else {
print ("nothing")
}
// save with NSUserDefaults
riskItemDefaults.set(riskEntry, forKey: "riskItem")
}
}
這是我的結構:
public struct RiskEntry {
let title: String
var consequences: String
}
我自定單元
// ---------------- delegate to transfer entered data to VC -----------------
protocol CustomCellUpdaterDelegate {
func transferData(consequencesTranferred: String, identifier: String)
}
// ---------------- start of class CellCustomized -----------------
class CustomCell: UITableViewCell, UIPickerViewDataSource, UIPickerViewDelegate, UITextViewDelegate {
var delegate: CustomCellUpdaterDelegate?
// text fields, text views and picker views
@IBOutlet weak var riskTitle: UITextView!
@IBOutlet weak var consequences: UITextView!
// ---------------- listener for text view to save input in string when editing is finished -----------------
func textViewDidEndEditing(_ textView: UITextView) {
if textView.tag == 1 {
textConsequences = consequences.text
nameIdentifier = riskTitle.text
delegate?.transferData(consequencesTranferred: self.textConsequences, identifier: nameIdentifier)
} else {
print ("nothing")
}
}
}
你收到的例外是什麼? –
我的控制檯輸出是:'libC++ abi.dylib:以'NSException類型的未捕獲異常終止,而我的AppDelegate.swift類被選爲'線程1:信號SIGABRT' – Jake2Finn
可能的http://stackoverflow.com/重複問題/ 38406457 /如何保存一個自定義數組結構到nsuserdefault-with-swift?rq = 1 – hotpaw2