gpt4 book ai didi

Swift 最佳实践 : How to keep track of different objects?

转载 作者:行者123 更新时间:2023-11-28 14:05:33 25 4
gpt4 key购买 nike

我想知道跟踪同一类型的不同对象的好的解决方案是什么。

我有这个功能:

private extension MenuButtonsViewController {
// TODO: Find a way to find correct button based on MenuItem
func buttonFor(for menuItem: MenuItem) -> EmojiButton? {
guard let subViews = stackView.subviews as? [EmojiButton] else {
return nil
}
let button = buttonFactory.makeEmojiButton(title: menuItem.icon)
for subView in subViews where subView == button {
return subView
}
return nil
}
}

我有一个数组 (UIStackView),其中包含不同数量的按钮 (EmojiButton)。这些按钮是使用 MenuItem 中的内容创建的。我正在寻找一个好的和干净的解决方案,如何根据 MenuItemstackView 数组中查找和删除特定按钮。

到目前为止,我有三个想法:

  • 创建一个新对象,使用与要删除的对象相同的值初始化,然后使用 == 进行匹配。 (上面的解决方案)。这没有用。
  • 为所有按钮添加一个id,然后为MenuItem对象添加一个相应的id。但这似乎不是一个优雅的解决方案,必须在任何地方添加它,并从按钮对象中公开这个变量。
  • 也许可以将按钮存储在包装类(如 MenuItemButton)中,并带有要匹配的 id,或者通过存储 MenuItem 对象,这样我可以与之匹敌。

有什么想法吗?这通常是如何完成的?

最佳答案

如果 MenuItemEmojiButton 继承自 UIView,您可以使用可用的 tag 属性在所有 UIView 上。

您首先需要为每个 MenuItem 分配一个唯一的 tag 值。

然后您需要将这个相同的值分配给相应的表情符号按钮的 tag 属性。 (这对你们工厂来说是一件好事。)

完成后,您可以按如下方式修改函数:

//assumes MenuItem and EmojiButton inherit from UIView
func buttonFor(for menuItem: MenuItem) -> EmojiButton? {
return stackView.viewWithTag(menuItem.tag) as? EmojiButton
}

关于Swift 最佳实践 : How to keep track of different objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53016424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com