【问题标题】:make an array from custom object properties从自定义对象属性创建一个数组
【发布时间】:2018-01-09 07:28:03
【问题描述】:

我有一个自定义类,例如:

 class Tender: NSObject {
     public var code = ""
     public var name = ""
 }

一个方法返回一个 Tender 类型的数组。从这个数组中,我想准备一个只包含名称的数组。 例如,

 public func fetchTenderArray() -> [Tender] {
      var tenderArray = [Tender]()
      let tender1 = Tender()
      tender1.code = "t1"
      tender1.name = "tenderName1"
      let tender2 = Tender()
      tender2.code = "t2"
      tender2.name = "tenderName2"
      tenderArray.append(tender1)
      tenderArray.append(tender2)
      return tenderArray
 }

现在,我有一个使用这个tenderArray 的方法。我需要用 [Tender] 的名称组成一个数组。

 public func formTenderNamesArray() -> [String] {
      let tenderArray = fetchTenderArray()
      var tenderNames = [String]()
      for tender in tenderArray {
           tenderNames.append(tender.name)
      }
      return tenderNames    // returns ["tenderName1","tenderName2"]
 }

是否有一种使用 swift3 准备字符串数组的简短且最佳的方法?

【问题讨论】:

  • 有没有想过使用哈希图或字典来存储代码(=key)和名称(=value)?

标签: arrays string dictionary swift3 key


【解决方案1】:

//试试这个

public func formTenderNamesArray() -> [String] {
    let tenderArray = fetchTenderArray()
    var tenderNames = (tenderArray as! NSArray).value(forKey: "name") as! [String]
    return tenderNames
}

【讨论】:

    【解决方案2】:

    尝试使用地图功能,

    应该是这样的。

    let tenderArray = fetchTenderArray()
    let tenderNames = tenderArray.map {$0.name}
    

    有关更多信息,请参阅此链接。

    https://useyourloaf.com/blog/swift-guide-to-map-filter-reduce/

    【讨论】:

      猜你喜欢
      • 2015-05-15
      • 2022-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      相关资源
      最近更新 更多