長標題!我深感抱歉。
預期結果: 在 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($0).inserted }
}
}
上面的問題:我放置 uniqued() 方法的地方,將決議出字串中的各個字符。所以我知道它太深了一層。達到我要求的結果的最佳方法是什么?
uj5u.com熱心網友回復:
問題是該uniqued方法使用宣告的過濾器方法,如果是字符Sequence陣列,它將始終回傳一個陣列。您可以簡單地使用陣列或字符初始化一個新字串,或者改進該方法以支持字串。要使該方法支持字串,您需要擴展. 宣告了一個過濾器方法,因此如果您過濾一個字串,它將回傳另一個字串,正如我在同一篇文章的答案中所示,您在該帖子中找到了您在問題中顯示的方法:Sequence.ElementString[Character]RangeReplaceableCollectionRangeReplaceableCollectionSelfuniqued
extension RangeReplaceableCollection where Element: Hashable {
var orderedSet: Self {
var set = Set<Element>()
return filter { set.insert($0).inserted }
}
}
用法:
view.childValue.text = value.childValue?.orderedSet
uj5u.com熱心網友回復:
試試這個:
for (i, value) in child.enumerated() {
let view = CustomUIView()
view.childValue.text = value.childValue.uniqued()[i]
self.stackView.addArrangedSubview(view)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/421743.html
標籤:
上一篇:結合從模型到視圖模型的轉換會出現錯誤“在運行.eraseToAnyPublisher()時,運算式型別不明確,沒有更多背景關系
下一篇:CSS
