【问题标题】:Swift 2D array with different types具有不同类型的 Swift 2D 数组
【发布时间】:2015-12-19 23:07:17
【问题描述】:

是否有可能拥有一个多维数组,其中包含一种以上的数据类型。

示例(我希望最后一项是 Int):

var london = [[String]]()

london[0] = ["England", "Chelmsford", 49]
london[1] = ["Wales", "Cardiff", 212]
london[2] = ["Scotland", "Glasgow", 556]
london[3] = ["Germany", "Frankfurt", 640]

【问题讨论】:

    标签: arrays swift types


    【解决方案1】:

    您在该数组中使用一个数组,其中有两个选项之一

    要么让它成为一个包含国家/城市/整数作为属性的类或结构

    使用元组 typealias myData = (country: String, city: String, myNumber:Integer)

    什么用途取决于您将在代码中使用它做什么

    【讨论】:

      【解决方案2】:

      我认为你最好使用 structDictionary 的数组:

      struct CityInfo {
          var country : String
          var city : String
          var data : Int
      }
      
      var london = [CityInfo]()
      london.append(CityInfo(country: "England", city: "Chelmsford", data: 49))
      london.append(CityInfo(country: "Wales", city: "Cardiff", data: 212))
      london.append(CityInfo(country: "Scotland", city: "Glasgow", data: 556))
      london.append(CityInfo(country: "Germany", city: "Frankfurt", data: 640))
      

      但你可以根据需要使用二维数组:

      var london = [[Any]]()    
      london.append(["England", "Chelmsford", 49])
      london.append(["Wales", "Cardiff", 212])
      london.append(["Scotland", "Glasgow", 556])
      london.append(["Germany", "Frankfurt", 640])
      

      【讨论】:

      • 对不起,我对 Swift 的无知,请问使用 struct 方法有什么好处?
      • 您已标记和强类型数据。对于二维数组,每个数组的最后一个元素是Int 的知识是隐含的。您必须记住每次使用时的位置和数据类型。
      【解决方案3】:

      如果你真的想要它就像你拥有的那样,只需使用 AnyObject 作为类型

      var london = [[AnyObject]]()
      
          london.append(["England", "Chelmsford", 49])
          london.append(["Wales", "Cardiff", 212])
          london.append(["Scotland", "Glasgow", 556])
          london.append(["Germany", "Frankfurt", 640])
      

      【讨论】:

      • 您的代码会因为 2 个原因崩溃:(1) 索引越界和 (2) Int 不是对象。
      • 很好,但 Int 是一个对象
      猜你喜欢
      • 2020-04-09
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多