2017-08-01 91 views
0

我想展開我的數組,我保存在UserDefaults中。我有2個視圖,在第一個視圖中,我聲明瞭3個主體的數組,然後將其保存在UserDefaults中。在第二個觀點,我可以打印出來,但是當我試圖擴大我陣列與UITextView的新的課題,我得到錯誤信息從UserDefaults擴展數組

線程1:EXC_BAD_INSTRUCTION(代碼= EXC_l386_INVOP,子碼=爲0x0)

什麼時我做錯了?

class ViewController: UIViewController { 

@IBOutlet weak var text: UITextView! 

var array: [String] = ["Prvni", "Druhy"] 
var prvni = "" 


override func viewDidLoad() { 
    super.viewDidLoad() 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

@IBAction func zapsat(_ sender: UIButton) { 

    prvni = text.text! 
    array.insert(prvni, at: 2) 

    let defaults = UserDefaults.standard 

    defaults.setValue(array, forKey: "KEY") 

    defaults.synchronize() 
} 


@IBAction func vypsat(_ sender: UIButton) { 
    if((UserDefaults.standard.array(forKey: "KEY")) != nil){ 
     let historyWords = (UserDefaults.standard.array(forKey: "KEY") as? [String])! 
     print(historyWords) 
    } 
} 

}

和第二的ViewController

class druhy: UIViewController { 

var array = [String]() 
var druhy = "" 
@IBOutlet weak var text: UITextView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

@IBAction func vypsat(_ sender: UIButton) { 
    if((UserDefaults.standard.array(forKey: "KEY")) != nil){ 
     let historyWords = (UserDefaults.standard.array(forKey: "KEY") as? [String])! 
     print(historyWords) 
    } 
} 

@IBAction func zapsat(_ sender: UIButton) { 

    druhy = text.text! 
    if((UserDefaults.standard.array(forKey: "KEY")) != nil){ 
     var array = (UserDefaults.standard.array(forKey: "KEY") as? [String])! 
     print(array) 
    } 
    array.insert(druhy, at: 3) 

    let defaults = UserDefaults.standard 

    defaults.setValue(array, forKey: "KEY") 

    defaults.synchronize() 
} 

}

回答

0

從陣列中的代碼刪除var聲明使用全局陣列

var array = (UserDefaults.standard.array(forKey: "KEY") as? [String])! 

array = (UserDefaults.standard.array(forKey: "KEY") as? [String])! 

然後,而不是插入,使用追加

array.append(druhy) 

所以總碼 -

druhy = text.text! 
    if((UserDefaults.standard.array(forKey: "KEY")) != nil){ 
     array = (UserDefaults.standard.array(forKey: "KEY") as? [String])! 
     print(array) 
    } 
    array.append(druhy,) 

    let defaults = UserDefaults.standard 

    defaults.setValue(array, forKey: "KEY") 

    defaults.synchronize()