在iOS swift中更正对象类型

时间:2016-06-18 16:47:55

标签: ios swift

我需要选择一个用于保持对象的类型。但我需要一些帮助。

我的对象应该有3个属性:

  • medium
  • 最大

每个人都会持有网址

我的对象也应该有Preferred属性。哪个将被指定为小型,中型或最大型。并且Preferred应该从所选属性返回URL。

例如,如果我指定:

small = url1
medium = url2
max = url3

//这里我也有全局设置类。在那里我应该选择从首选 - 最大网址返回。并且对于每个insnanse首选应返回最大值。

Class.preferred = Type.max //something like that
print(instanse.preferred) //printed url3

我如何存档?我不能在这里使用Class,但我不确定我可以使用枚举存档吗?

不起作用的样本

enum VideoType: String {
case min
case med
case max
}


class VideoInstanse {
var min: VideoType
var med: VideoType
var max: VideoType

static var preferred:VideoType!

init(dictionary: [Int : String]) {
    min.rawValue = dictionary[1] //error
    med.rawValue = dictionary[2]
    max.rawValue = dictionary[3]
}
}

2 个答案:

答案 0 :(得分:1)

您可能有兴趣在这种情况下使用枚举(如果我理解您的问题)

enum Endpoint: String {
  var baseURLString: String {
    get {
      return "https://myurl.com?size=".appending(self.rawValue)
    }
  }

  case small
  case medium
  case max

  var url: URL? {
    return URL(string: baseURLString)
  }
}


print(Endpoint.small.url!)
print(Endpoint.medium.url!)
print(Endpoint.max.url!)

输出结果为:

https://myurl.com?size=small
https://myurl.com?size=medium
https://myurl.com?size=max

答案 1 :(得分:0)

结构,也许?

struct Size {
    var small : NSURL = NSURL()
    var medium : NSURL = NSURL()
    var large : NSURL = NSURL()
}
class VideoInstanse {
    var properties = Size()


   func someMethod() {
    self.properties.small = url1
    self.properties.medium = url2
    self.properties.large = url3
   }
}

你也可以在课外的其他地方使用它:

var instance = VideoInstance()
instance.properties.small...
// and so on...