如何存储我的第一个文本字段以不在 swift 中第二次询问

How to store my first textfield to not ask for the second time in swift

在此先感谢您的帮助。

我创建了一个 UITextField,当用户输入 link 并输入后,我的文本字段消失,我的 webView 出现。

我想做的是,当用户第一次写他们的 link 时,文本字段保存 link 并且当用户再次打开应用程序时,网页视图直接打开从上次 link 用户写的文本字段开始。基本上存储的 link 应该 运行 第二次。

这是我所有的代码,

    import UIKit
import Foundation


let urlKey = "User URL"

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var textField: UITextField!
    @IBOutlet weak var webView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.webView.hidden = true
            self.textField.addTarget(self, action: #selector(ViewController.textFieldDidUpdate(_:)), forControlEvents: UIControlEvents.EditingChanged)

      if doesURLExist() {
        self.textField.text = getURL()



  }


}
    // Text Field Delegate
    func textFieldDidUpdate(textField: UITextField)
    {
        // Remove Spaces
        textField.text = textField.text!.stringByReplacingOccurrencesOfString(" ", withString: "", options: [], range: nil)



        // Validate URL
        NSURL.validateUrl(textField.text, completion: { (success, urlString, error) -> Void in
            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                if (success)
                {

                  self.saveURL(urlString!)
                  self.webView.hidden = false
                  self.textField.hidden = true 
                  let request = NSURLRequest(URL: NSURL(string: urlString!)!)
                  self.webView.loadRequest(request)

                }
                else
                {
                    self.webView.stopLoading()
                    self.webView.hidden = true
                }


            })

        })



          }
    @IBAction func dismissKeyboard(sender: AnyObject) {
        self.resignFirstResponder()
        self.view.endEditing(true)
    }
  func saveURL(urlString: String)  {
    let defaults = NSUserDefaults.standardUserDefaults()
    defaults.setObject(urlString, forKey: urlKey)
  }

  func getURL() -> String {
    let defaults = NSUserDefaults.standardUserDefaults()
    let urlString = defaults.objectForKey(urlKey) as! String
    return urlString
  }

  func doesURLExist() -> Bool {
    let defaults = NSUserDefaults.standardUserDefaults()
    guard let _ = defaults.objectForKey(urlKey) where defaults.objectForKey(urlKey) is String else {
      return false
    }
    return true
  }


}

这是我在 github 中的项目:enter link description here

您应该将输入的字符串保存为用户默认值。当您的应用程序打开时,您应该检查用户默认值以查看是否已保存字符串。

Swift 2 个用于将 URL 保存为用户默认值的代码:

NSUserDefaults.standardUserDefaults().setObject(urlString!, forKey: "EnteredURLString")

Swift 2 代码检查是否有保存的 URL 字符串:

if let urlString = NSUserDefaults.standardUserDefaults().stringForKey("EnteredURLString") {
}

您首先要通过调用 doesURLExist 来检查 url 是否存在,如果存在,您将选择不显示该文本字段。如果不存在,调用saveURLNSUserDefaults 提供了一种简单的方法来存储轻量级数据。

let urlKey = "User URL"     

func saveURL(urlString: String)  {
    let defaults = NSUserDefaults.standardUserDefaults()
    defaults.setObject(urlString, forKey: urlKey)
}

func getURL() -> String {
    let defaults = NSUserDefaults.standardUserDefaults()
    let urlString = defaults.objectForKey(urlKey) as! String
    return urlString
}

func doesURLExist() -> Bool {
    let defaults = NSUserDefaults.standardUserDefaults()
    guard let _ = defaults.objectForKey(urlKey) where defaults.objectForKey(urlKey) is String else {
        return false
    }
    return true
}

所以您的 class 应该类似于:

import UIKit
import Foundation

let urlKey = "User URL"     

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var textField: UITextField!
    @IBOutlet weak var webView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.webView.hidden = true

        self.textField.addTarget(self, action: #selector(ViewController.textFieldDidUpdate(_:)), forControlEvents: UIControlEvents.EditingChanged)

        if(doesURLExist) {
            self.textField.text = getURL()
        }
        // Demo UI Settings
    }
}

  // Text Field Delegate
func textFieldDidUpdate(textField: UITextField)
{
    // Remove Spaces
    textField.text = textField.text!.stringByReplacingOccurrencesOfString(" ", withString: "", options: [], range: nil)

    // Validate URL
    NSURL.validateUrl(textField.text, completion: { (success, urlString, error) -> Void in
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            if (success) {
              self.saveURL(urlString)
              self.webView.hidden = false
              self.textField.hidden = true 
              let request = NSURLRequest(URL: NSURL(string: urlString!)!)
              self.webView.loadRequest(request)
            } else {
                self.webView.stopLoading()
                self.webView.hidden = true
            }
        })
    })
}

不要忘记将原始函数添加到您的 class。