0
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
    }
  }
}

我有一个公共变量,我希望它的初始值为NSNumber

public var imageType: NSNumber? = NSNumber(int: ImageType.Psd)

但我在这里遇到错误Cannot convert value of type 'ImageType' to expected argument type 'Int32'

这很奇怪,因为我也将 int 用于我的枚举。

4

1 回答 1

3

问题

您正在使用这个初始化程序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)
于 2016-04-15T16:17:10.400 回答