从自定义对象属性创建一个数组

时间:2017-08-02 07:46:19

标签: arrays string dictionary swift3 key

我有一个自定义类,如:

 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
 }

现在,我有一个使用此招标的方法。我需要形成一个名为[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准备该字符串数组的简短方法?

2 个答案:

答案 0 :(得分:1)

尝试使用地图功能

它应该是这样的。

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

有关详细信息,请参阅此链接。

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

答案 1 :(得分:0)

//试试这个

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