在扩展名中声明属性并获得错误的访问错误

时间:2018-08-30 16:39:10

标签: ios swift

我陷入了一个想在NSError扩展中声明属性的问题。 这是我的错误结构

struct CustomError {
   var errorTitle: String?
   var errorDescription: String?
   var isClear: Bool?
}

这是我的扩展名

extension NSError {
var customeError:CustomError {
    get {
        return self.customeError
    }

    set {
        self.customeError = newValue
    }
  }
}

在属性中设置自定义错误时,我遇到了严重的访问错误。

2 个答案:

答案 0 :(得分:1)

您无法将属性添加到extensions

唯一可行的方法是使用objc_getAssociatedObject来存储属性。

答案 1 :(得分:0)

通过互联网搜索此问题后,我找到了一个不错的解决方案。我们可以声明,但是这里有个窍门是更新的扩展名。

extension NSError {
  struct Holder {
      static var customErr: CustomError = CustomError()
  }
  var customeError:CustomError {
      get {
          return Holder.customErr
      }

      set {
          Holder.customErr = newValue
      }
  }
}

实际上,在我之前发布的问题中,保留周期是存在的,但是当我添加了holder之后,就没有周期了,并且代码运行得很好。

谢谢大家