在块中连接字符串

Join strings in a block

我有一个块可以更新每个字符串的视图。在它的对象 class 中,我通过了它:

func eachFeaturesSection(block: ((String?) -> Void)?) {
propertyFeatures.forEach { feature in
  guard let feature = feature as? RealmString else {
    return
  }
  let features = feature.stringValue
    block?(features)
 }
}

我会在 ViewController 得到它,方法是:

listing!.eachFeaturesSection({ (features) in
  print(features)
  self.facilities = features!
})

因此它将打印为:

Optional("String 1")
Optional("String 2")

和 self.facilities 将设置为最新值 self.facilities = "String 2"

cell.features.text = features // it will print String 2

那么,如何实现将所有字符串连接到一个字符串中,例如self.facilities = "String 1, String 2"。我用 .jointString 不起作用。感谢您的帮助。

也许您可以将它们添加到 String 个元素的数组中,然后在完成后对该数组调用 joined

所以在你的 ViewController 中有这样的东西:

var featuresArray = [String]()

listing!.eachFeaturesSectionT({ (features) in
    print(features)
    featuresArray.append(features!)
})

//Swift 3 syntax
cell.features.text = featuresArray.joined(separator: ", ")

//Swift 2 syntax
cell.features.text = featuresArray.joinWithSeparator(", ")

希望对你有所帮助。

self.facilities = features! 什么都不做,每次迭代都会不断更新值

将行 self.facilities = features! 更改为 self.facilities += features!self.facilities = self.facilities + ", " + features!

这是我的做法(假设您的 propertyFeaturesRealmString 的数组):

Swift 3:

let string = (propertyFeatures.map { [=10=].stringValue }).joined(separator: ", ")

Swift 2:

let string = (propertyFeatures.map { [=11=].stringValue }).joinWithSeparator(", ")