【问题标题】:Error Saving Text Views in NSUserDefault在 NSUserDefault 中保存文本视图时出错
【发布时间】:2015-07-22 16:25:10
【问题描述】:

我有 6 个文本视图和一个按钮来保存其中写入的文本。 问题是按钮只保存到第四个TextView,第五个和第六个没有正确保存,他们只是复制第三个和第四个textviews中的文本

例子

第一个文本视图 - 正确保存

第二个文本视图 - 正确保存

第三个文本视图 - 正确保存

第四个文本视图 - 正确保存

第五个文本视图 - 它是第三个文本视图上文本的副本

第六个文本视图 - 它是第四个文本视图上文本的副本

保存按钮。

似乎所有代码都可以,并且所有文本视图都已成功链接,但最后两个文本视图仍然失败。

我的代码在这里:

@IBOutlet weak var scrollView: UIScrollView!

@IBOutlet weak var labelUno: UILabel!
@IBOutlet weak var labelDos: UILabel!


@IBOutlet weak var primerTextView: UITextView!

@IBOutlet weak var segundoTextView: UITextView!

@IBOutlet weak var tercerTextView: UITextView!

@IBOutlet weak var cuartoTextView: UITextView!

@IBOutlet weak var quintoTextView: UITextView!

@IBOutlet weak var sextoTextView: UITextView!






override func viewDidLoad() {
    super.viewDidLoad()

      scrollView.contentSize.height = 2000

    labelUno.text = "¿Qué significa el éxito para ti? , ¿significa ser millonario , ser famoso , contribuir de alguna manera a ayudar a muchas personas, ser un buen padre o madre de familia, ser el mejor en tu profesión??"

    primerTextView.layer.borderWidth = 0.8
    primerTextView.layer.borderColor = UIColor.blackColor().CGColor
    primerTextView.layer.cornerRadius = 8.0


    segundoTextView.layer.borderWidth = 0.8
    segundoTextView.layer.borderColor = UIColor.blackColor().CGColor
    segundoTextView.layer.cornerRadius = 8.0

    tercerTextView.layer.borderWidth = 0.8
    tercerTextView.layer.borderColor = UIColor.blackColor().CGColor
    tercerTextView.layer.cornerRadius = 8.0

    cuartoTextView.layer.borderWidth = 0.8
    cuartoTextView.layer.borderColor = UIColor.blackColor().CGColor
    cuartoTextView.layer.cornerRadius = 8.0

    quintoTextView.layer.borderWidth = 0.8
    quintoTextView.layer.borderColor = UIColor.blackColor().CGColor
    quintoTextView.layer.cornerRadius = 8.0

    sextoTextView.layer.borderWidth = 0.8
    sextoTextView.layer.borderColor = UIColor.blackColor().CGColor
    sextoTextView.layer.cornerRadius = 8.0




    //Save Button
    let stringKey = NSUserDefaults.standardUserDefaults()

    segundoTextView.text = stringKey.stringForKey("key")
    primerTextView.text = stringKey.stringForKey("key2")
    tercerTextView.text = stringKey.stringForKey("key3")
    cuartoTextView.text = stringKey.stringForKey("key4")
    quintoTextView.text = stringKey.stringForKey("key5")
    sextoTextView.text = stringKey.stringForKey("key6")

    //Hide keyboard
    //Hide keyboard with touching anywhere
    var tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "DismissKeyboard")
    view.addGestureRecognizer(tap)

}


func textFieldShouldReturn(textField: UITextField) -> Bool {
    textField.resignFirstResponder()

    return true
}


@IBAction func saveButton(sender: AnyObject) {



    let myText = segundoTextView.text
    let myText2 = primerTextView.text
    let myText3 = tercerTextView.text
    let myText4 = cuartoTextView.text
    let myText5 = quintoTextView.text
    let myText6 = sextoTextView.text


    NSUserDefaults.standardUserDefaults().setObject(myText, forKey: "key2")
    NSUserDefaults.standardUserDefaults().setObject(myText2, forKey: "key")
    NSUserDefaults.standardUserDefaults().setObject(myText3, forKey: "key3")
    NSUserDefaults.standardUserDefaults().setObject(myText4, forKey: "key4")
    NSUserDefaults.standardUserDefaults().setObject(myText3, forKey: "key5")
    NSUserDefaults.standardUserDefaults().setObject(myText4, forKey: "key6")

    NSUserDefaults.standardUserDefaults().synchronize()

    var alert = UIAlertController(title: "Guardado", message:"Tu texto se ha guardado", preferredStyle: UIAlertControllerStyle.Alert)

    alert.addAction(UIAlertAction(title: "OK", style: .Cancel, handler: nil))

    self.presentViewController(alert, animated: true, completion: nil)


}


//Hide keyboard with return button
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
    if text == "\n"
    {
        primerTextView.resignFirstResponder()
        segundoTextView.resignFirstResponder()
        tercerTextView.resignFirstResponder()
        cuartoTextView.resignFirstResponder()
        quintoTextView.resignFirstResponder()
        sextoTextView.resignFirstResponder()


        return false
    }
    return true
}


//Hide keyboard with touching anywhere

func DismissKeyboard(){


    view.endEditing(true)

}

}

【问题讨论】:

    标签: swift textview


    【解决方案1】:

    我猜在这部分:

    NSUserDefaults.standardUserDefaults().setObject(myText, forKey: "key2")
    NSUserDefaults.standardUserDefaults().setObject(myText2, forKey: "key")
    NSUserDefaults.standardUserDefaults().setObject(myText3, forKey: "key3")
    NSUserDefaults.standardUserDefaults().setObject(myText4, forKey: "key4")
    NSUserDefaults.standardUserDefaults().setObject(myText3, forKey: "key5")
    NSUserDefaults.standardUserDefaults().setObject(myText4, forKey: "key6")
    

    应该是:

    NSUserDefaults.standardUserDefaults().setObject(myText2, forKey: "key2")
    NSUserDefaults.standardUserDefaults().setObject(myText, forKey: "key")
    NSUserDefaults.standardUserDefaults().setObject(myText3, forKey: "key3")
    NSUserDefaults.standardUserDefaults().setObject(myText4, forKey: "key4")
    NSUserDefaults.standardUserDefaults().setObject(myText5, forKey: "key5")
    NSUserDefaults.standardUserDefaults().setObject(myText6, forKey: "key6")
    

    看起来像是复制/粘贴错误:在最后两行中输入 myText5myText6 而不是 myText3myText4

    【讨论】:

    • :D :D :D 现在完美了!!多么愚蠢的错误,非常感谢 Eric。
    • 别担心,这种错误每个人都会发生... :) 不客气!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多