将过滤后的字符串数组附加到 UILables - Swift
Append filtered string array to UILables - Swift
长标题!我真的很抱歉。
预期结果: 在 stackView 的 UIView 内的 UILabel 中显示唯一字符串值。 stackView 中可能有多个 UIView。 stackView 位于 tableCell 中。哇....
视图和单元格是自定义的,不允许我创建部分。我必须使用现有代码库中的内容。
问题 我一直在尝试将唯一的可选字符串值放入相应的 UILabel。我有一个工作扩展,可以从数组中获取唯一项。但我只是不知道在哪里实现它,以获得我需要的唯一值。
代码:
// Sample Model Structs
struct Parent {
var child: [Child]?
}
struct Child {
var childValue: String?
}
class TableViewCell {
var stackView = UIStackView()
func configureCellFrom(parent: Parent) {
/// Other code lives in the func to use the Parent struct.
if let child = parent.child {
if child.count > 1 {
tableCell.topLabel.text = "Multiple Child Values"
tableCell.ShowChildViewsButton.isHidden = false
for value in child {
let view = CustomUIView()
view.childValue.text = value.childValue.uniqued()
self.stackView.addArrangedSubview(view)
}
}
}
}
}
extension Sequence where Element: Hashable {
func uniqued() -> [Element] {
var set = Set<Element>()
return filter { set.insert([=14=]).inserted }
}
}
上述问题: 我放置 uniqued() 方法的地方将解析出字符串中的各个字符。所以我知道它太深了一层。达到我要求的结果的最佳方法是什么?
试试这个:
for (i, value) in child.enumerated() {
let view = CustomUIView()
view.childValue.text = value.childValue.uniqued()[i]
self.stackView.addArrangedSubview(view)
}
这里的问题是 uniqued
方法使用与您在问题中显示的 uniqued
方法相同的 post 中的 filter method declared on Sequence
which will always return an array of the Sequence.Element
in the case of a String
an array of characters [Character]
. You can simply initialize a new string with the array or characters or improve that method to support strings as well. To make that method support strings you need to extend RangeReplaceableCollection
. There is a filter method declared on RangeReplaceableCollection
which returns Self
therefore if you filter a string it will return another string as I showed in this answer:
extension RangeReplaceableCollection where Element: Hashable {
var orderedSet: Self {
var set = Set<Element>()
return filter { set.insert([=10=]).inserted }
}
}
用法:
view.childValue.text = value.childValue?.orderedSet
长标题!我真的很抱歉。
预期结果: 在 stackView 的 UIView 内的 UILabel 中显示唯一字符串值。 stackView 中可能有多个 UIView。 stackView 位于 tableCell 中。哇....
视图和单元格是自定义的,不允许我创建部分。我必须使用现有代码库中的内容。
问题 我一直在尝试将唯一的可选字符串值放入相应的 UILabel。我有一个工作扩展,可以从数组中获取唯一项。但我只是不知道在哪里实现它,以获得我需要的唯一值。
代码:
// Sample Model Structs
struct Parent {
var child: [Child]?
}
struct Child {
var childValue: String?
}
class TableViewCell {
var stackView = UIStackView()
func configureCellFrom(parent: Parent) {
/// Other code lives in the func to use the Parent struct.
if let child = parent.child {
if child.count > 1 {
tableCell.topLabel.text = "Multiple Child Values"
tableCell.ShowChildViewsButton.isHidden = false
for value in child {
let view = CustomUIView()
view.childValue.text = value.childValue.uniqued()
self.stackView.addArrangedSubview(view)
}
}
}
}
}
extension Sequence where Element: Hashable {
func uniqued() -> [Element] {
var set = Set<Element>()
return filter { set.insert([=14=]).inserted }
}
}
上述问题: 我放置 uniqued() 方法的地方将解析出字符串中的各个字符。所以我知道它太深了一层。达到我要求的结果的最佳方法是什么?
试试这个:
for (i, value) in child.enumerated() {
let view = CustomUIView()
view.childValue.text = value.childValue.uniqued()[i]
self.stackView.addArrangedSubview(view)
}
这里的问题是 uniqued
方法使用与您在问题中显示的 uniqued
方法相同的 post 中的 filter method declared on Sequence
which will always return an array of the Sequence.Element
in the case of a String
an array of characters [Character]
. You can simply initialize a new string with the array or characters or improve that method to support strings as well. To make that method support strings you need to extend RangeReplaceableCollection
. There is a filter method declared on RangeReplaceableCollection
which returns Self
therefore if you filter a string it will return another string as I showed in this answer:
extension RangeReplaceableCollection where Element: Hashable {
var orderedSet: Self {
var set = Set<Element>()
return filter { set.insert([=10=]).inserted }
}
}
用法:
view.childValue.text = value.childValue?.orderedSet