ios - 访问静态变量并在类外设置它

标签 ios swift static-variables

这是一个 SubtitleCustomField 类。

Class SubtitleCustomField: CustomCellField {
static var CellIdentifier: String!

  override init(frame: CGRect) {
  super.init(frame: frame)
  if CellIdentifier == "A" {
   //DO SOMETHINIG
  } else if CellIdentifier == "B" {
  //DO SOMETHING
  }

  }
}

在 SubtitleCustomField 类之外,我基本上需要访问静态变量 CellIdentifier,将值设置为“A”,并触发 if 语句运行。

在另一个类 Custom 类中,我确认我可以通过以下方式访问静态变量 CellIdentifier:

Class Custom: CustomViewController {
     SubtitleCustomField.CellIdentifier = "part1_subtitle"
}

此时我遇到了一个问题。在 SubtitleCustomField 类中,我收到关于 if CellIdentifier == "A" 的错误信息

Static member 'CellIdentifier' cannot be used on instance of type 'SubtitleCustomField'

实现我想要的目标的最佳方法是什么?总之,我想在 SubtitleCustomField 之外设置 CellIdentifier 变量,并使用我在 SubtitleCustomField 类中设置的值触发 if 语句。

最佳答案

错误消息试图告诉您您正在引用一个类型属性(静态属性),就好像它是一个实例属性一样。您需要在 SubtitleCustomField 初始值设定项中使用“SubtitleCustomField”作为“CellIdentifier”的前缀,就像您在其他地方引用它时所做的那样。

override init(frame: CGRect) {
    super.init(frame: frame)
    if SubtitleCustomField.CellIdentifier == "A" {
        //DO SOMETHINIG
    } else if SubtitleCustomField.CellIdentifier == "B" {
        //DO SOMETHING
    }
}

您应该始终使用类型名称后跟“.”来引用类型属性。后跟属性名称。

关于ios - 访问静态变量并在类外设置它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34524967/

相关文章:

c - 在 C 中,在函数中使用静态变量会使它更快吗?

ios - 隐藏 iOS 9 中 UIWebView 的快捷键盘栏

ios - 无法在 Visual Studio 2013 for Xamarin Projects 中从 iPhone 切换到 iPhoneSimulator

ios - Swift 2 TapGesture 错误 : "unrecognized selector sent to instance"

ios - 使用 setContentOffset 滚动到特定页面

java - 是否可以访问并设置为另一个类的静态变量

ios - iOS 10/macOS Sierra 中 Core Data 的 NSPersistentContainer

ios - UITableview 更新单个单元格

ios - CocoaLumberjack Swift - 检查日志级别是否包含 .verbose

java - Java-线程和静态变量