在标签中显示扩展文件用户默认值

时间:2018-11-29 14:11:02

标签: ios swift label extension-methods userdefaults

我正在尝试在扩展文件中称呼用户defualt。我不知道如何调用以使其在视图控件中显示为文本。在扩展文件中,如果我只是进行打印计数,它会完美地显示在日志文件中。

extension UIViewController {
    func updateVisitCount() {
        let key = String(describing: type(of: self))
        let count = UserDefaults.standard.value(forKey: key) as? Int ?? 0
        UserDefaults.standard.set(count + 1, forKey: key)
    }
}

class easy: UIViewController {
    @IBOutlet var Name: UILabel!

    override func viewDidLoad() {
        Name.text = count
    }
}

1 个答案:

答案 0 :(得分:0)

您的代码无法编译,因为您试图访问超出其范围的变量。

  

范围是指变量和方法在其中一部分的可见性   一个程序到该程序的另一部分。重要性和意义   范围因语言而异,但是有两个通用范围   许多语言都有共同的概念:本地和全局范围。 https://en.wikiversity.org/wiki/Introduction_to_Programming/Scope

class Easy: UIViewController {

  @IBOutlet var name: UILabel!

  override func viewDidLoad() {

      name.text = String(visitCount)

      // didn't see it in your code but thought you might want this...
      updateVisitCount()
  }
}

extension UIViewController {

   private var visitCountKey: String { return String(describing: type(of: self)) }

   var visitCount: Int{
       return UserDefaults.standard.value(forKey: visitCountKey) as? Int ?? 0
   }

   func updateVisitCount() {
       UserDefaults.standard.set(visitCount + 1, forKey: visitCountKey)
   }
}