在元组中存储指向布尔值的指针

Posted

技术标签:

【中文标题】在元组中存储指向布尔值的指针【英文标题】:Store a pointer to a boolean value in a tuple 【发布时间】:2016-10-28 22:38:31 【问题描述】:

我的项目中有这样的东西:

struct buttonFlag 
    var flag: Bool
    var button: UIButton


var bool1: Bool = false
var bool2: Bool = false
var bool3: Bool = false

var obj1: UIButton = UIButton()
var obj2: UIButton = UIButton()
var obj3: UIButton = UIButton()

let buttonFlags: buttonFlag = [buttonFlag(bool1, obj1), buttonFlag(bool2, obj2), buttonFlag(bool3, obj3)]

我不希望将值 boo1 和 flag 分开处理,而是希望 flag 的值是对布尔值 (bool1..3) 的值的某种引用。 是否有任何内存有效的方法来做到这一点?

【问题讨论】:

你的问题真的不清楚。可以补充一下吗? Swift 中的指针...?你确定这是你想要的吗? 您能否发布您现在拥有的代码并指出您认为问题出在哪里? 听起来您可能想要声明一个结构数组(其中包含按钮和布尔值作为成员)而不是使用元组。 您可能想要一本[UIButton:Bool] 的字典吗? 【参考方案1】:

如果您只是想要一个与UIButton 的每个实例相关联的实例唯一布尔标志,您可以简单地将后者子类化,将单个Bool 属性添加到派生类。

class MyUIButton: UIButton 
    var flag: Bool = false

您可以像对待父类实例一样对待自定义子类 MyUIButton 的实例,此外,您现在可以访问每个按钮实例的 flag 属性。

人为的示例用法:

let btn1 = MyUIButton()
let btn2 = MyUIButton()
let btn3 = MyUIButton()

let buttons = [btn1, btn2, btn3]

btn1.flag = true
btn3.flag = true

for btn in buttons where btn.flag 
    // ... do something with btn1 and btn3

【讨论】:

这不能解决我的问题,因为我仍然需要更改两个变量的值。 @Raoul 我可能会误解你想要什么:但无论你的方法如何,如果你想知道按钮是否被点击(并将这些知识存储在一些 bool 实例中) ,您至少需要一个与该按钮实例相关联的属性,和/或在按钮发生某些事件(例如单击)的情况下触发某个目标的操作。鉴于此,设置触发这些事件的按钮实例的单个属性是一件容易的事。 感谢您的回答。我重新考虑了我的方法并得出结论,使用 UIButton 的子类来存储标志可能更合理、更容易。

以上是关于在元组中存储指向布尔值的指针的主要内容,如果未能解决你的问题,请参考以下文章

Delphi 数据类型与Windows 数据类型 对照

Windows API数据类型

Python:在元组中存储许多正则表达式匹配?

用于存储布尔值的 MySQL 数据类型

用于存储布尔值的 MySQL 数据类型

用于存储布尔值的 MySQL 数据类型