Arrays 斯威夫特:附加到字典
我在尝试在swift中添加词典时遇到了一个问题。我试图记录每次按下按钮的时间。 我有两个按钮,每个按钮都有自己的iAction,下面是第一个:Arrays 斯威夫特:附加到字典,arrays,swift,dictionary,append,Arrays,Swift,Dictionary,Append,我在尝试在swift中添加词典时遇到了一个问题。我试图记录每次按下按钮的时间。 我有两个按钮,每个按钮都有自己的iAction,下面是第一个: @IBAction func button1(sender: AnyObject){ logButton("button1") } 在本例中,我将“button1”传递给函数。这是我的字典和函数: var buttonPresses = Dictionary<String, AnyObject>() var time = NSDate()
@IBAction func button1(sender: AnyObject){
logButton("button1")
}
在本例中,我将“button1”传递给函数。这是我的字典和函数:
var buttonPresses = Dictionary<String, AnyObject>()
var time = NSDate()
func logButton(button: String){
time = NSDate()
formatter.timeStyle = .shortStyle
buttonPresses[button] = formatter.stringFromDate(time)
}
我想做的是每次都将它添加到这个列表中,而不是使用键(按钮1或2)更新时间。首选输出为:
[button1: 1:15PM, button2: 1:15PM, button1: 1:17PM, button2: 1:19PM]
有了它,我尝试将字典设置为包含字典的数组,这样我就可以使用append添加每个按钮:
var buttonPresses = [[String:AnyObject]]()
我不知道如何设置logButton函数中的代码行以附加随时间按下的按钮。我尝试过类似的方法,但没有成功:
buttonPresses.append([button] = formatter.stringFromDate(time))
我是个业余爱好者,所以任何帮助都将不胜感激!多谢各位 字典可能不是解决您的问题的正确数据结构 据我所知,您希望存储与每个按钮关联的时间序列 由于字典的性质,如果使用按钮标签作为键,则每个键只能存储一个
时间
数据*
此外,因为字典本质上是一个哈希表,所以您不会有一个有序的[button1:1:15PM,button2:1:15PM,button1:1:17PM,button2:1:19PM]
我建议您可以使用元组数组来存储此信息。比如说,
var buttonPresses = [(code:String, time:AnyObject)]
buttonPresses.append(code:"button1", time:"1:15PM")
*如果按键存储数组,则可以克服此问题。A
struct
使用有意义的访问器存储数据是一个有趣的选择:
import Cocoa
struct ButtonPress {
var name: String?
var time: NSDate?
init(name: String, time: NSDate) {
self.name = name
self.time = time
}
}
var buttonPresses = [ButtonPress]()
func logButton(buttonName: String) {
let thisPress = ButtonPress(name: buttonName, time: NSDate())
buttonPresses.append(thisPress)
}
logButton("button1")
logButton("button2")
logButton("button3")
for pressed in buttonPresses {
println("Name: \(pressed.name!) - Time: \(pressed.time!)")
}
import Cocoa
struct ButtonPress {
var name: String?
var time: NSDate?
init(name: String, time: NSDate) {
self.name = name
self.time = time
}
}
var buttonPresses = [ButtonPress]()
func logButton(buttonName: String) {
let thisPress = ButtonPress(name: buttonName, time: NSDate())
buttonPresses.append(thisPress)
}
logButton("button1")
logButton("button2")
logButton("button3")
for pressed in buttonPresses {
println("Name: \(pressed.name!) - Time: \(pressed.time!)")
}