从UserDefaults扩展数组

问题描述:

我想展开我的数组,我保存在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() 
} 

}

从阵列中的代码删除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()