0

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

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 不起作用。感谢您的任何帮助。

4

3 回答 3

5

也许您可以将它们添加到元素数组中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(", ")

希望对您有所帮助。

于 2016-12-01T09:30:42.343 回答
1

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

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

于 2016-12-01T09:33:36.157 回答
0

这是我的做法(假设你propertyFeatures是一个数组RealmString):

斯威夫特 3:

let string = (propertyFeatures.map { $0.stringValue }).joined(separator: ", ")

斯威夫特 2:

let string = (propertyFeatures.map { $0.stringValue }).joinWithSeparator(", ")
于 2016-12-01T09:40:40.497 回答