public enum ImageType: Int
{
  case Png
  case Jpg
  case Psd

  public init(rawValue: Int)
  {
    switch rawValue {
    case 0:
      self = .Png
    case 1:
      self = .Jpg
    default:
      self = .Psd
    }
  }
}

我有一个公共var,我希望它的初始值NSNumber
public var imageType: NSNumber? = NSNumber(int: ImageType.Psd)

但我这里有个错误Cannot convert value of type 'ImageType' to expected argument type 'Int32'
这很奇怪,因为我也使用int作为枚举。

最佳答案

问题
您正在使用NSNumber的初始值设定项

public init(int value: Int32)

如您所见,它确实收到了Int32。但是你给它传递了一个ImageType所以编译器不高兴,它正告诉你
Cannot convert value of type 'ImageType' to expected argument type 'Int32'

解决方案
public var imageType: NSNumber? = NSNumber(integer: ImageType.Psd.rawValue)

10-05 21:36