使用枚举开关 -- Swift --- 一个可以走得很远
with enum switch -- Swift --- one can go far
遇到了这个困扰我的问题。我一直在看 Stack Overflow 以尝试找到解决方案,但找不到任何东西。
enum SortMails {
case SortedMailAsc
case SortedMailDec
}
var sortedMails: SortMails!
@IBAction func sortMails(sender: AnyObject) {
switch sortedMails! { /* this is where i get fatal error: unexpectedly found nil while unwrapping an Optional value */
case .SortedMailAsc:
NSNotificationCenter.defaultCenter().postNotificationName("sortedMailAsc", object: nil)
case .SortedMailDec:
NSNotificationCenter.defaultCenter().postNotificationName("sortedMailDec", object: nil)
}
}
基本上,我想要一个按钮有两个功能,首先按 sort UITableView Asc,然后按 sort UITableView Dec
嗯,您必须为 sortedMails 设置一个值。不过,我推荐的是使用可选项。
enum SortMails {
case SortedMailAsc
case SortedMailDec
}
var sortedMails: SortMails?
@IBAction func sortMails(sender: AnyObject) {
if let sortedMailsValue = sortedMails {
switch sortedMailsValue {
case .SortedMailAsc:
NSNotificationCenter.defaultCenter().postNotificationName("sortedMailAsc", object: nil)
case .SortedMailDec:
NSNotificationCenter.defaultCenter().postNotificationName("sortedMailDec", object: nil)
}
}
}
var sort = "Asc"
@IBAction func sortMails(sender: AnyObject) {
NSNotificationCenter.defaultCenter().postNotificationName("sortedMail" + sort, object: nil)
sort = (sort == "Asc") ? "Dec" : "Asc"
}
提问者想要一个触摸时升序排序,再次触摸时降序排序的按钮。
上面的代码使用一个字符串来保存排序顺序。它被初始化为 "Asc" 用于升序。
触摸按钮时,它会发布一条通知 "sortedMailAsc"。
然后它将排序顺序更改为 "Dec" 以进行降序(这应该是 "Desc" 但发问者使用 "Dec")。
第二次触摸按钮时,代码发布通知 "sortedMailDec" 并将排序顺序更改回 "Asc"。
我们的想法是保持代码简单并避免重复。
遇到了这个困扰我的问题。我一直在看 Stack Overflow 以尝试找到解决方案,但找不到任何东西。
enum SortMails {
case SortedMailAsc
case SortedMailDec
}
var sortedMails: SortMails!
@IBAction func sortMails(sender: AnyObject) {
switch sortedMails! { /* this is where i get fatal error: unexpectedly found nil while unwrapping an Optional value */
case .SortedMailAsc:
NSNotificationCenter.defaultCenter().postNotificationName("sortedMailAsc", object: nil)
case .SortedMailDec:
NSNotificationCenter.defaultCenter().postNotificationName("sortedMailDec", object: nil)
}
}
基本上,我想要一个按钮有两个功能,首先按 sort UITableView Asc,然后按 sort UITableView Dec
嗯,您必须为 sortedMails 设置一个值。不过,我推荐的是使用可选项。
enum SortMails {
case SortedMailAsc
case SortedMailDec
}
var sortedMails: SortMails?
@IBAction func sortMails(sender: AnyObject) {
if let sortedMailsValue = sortedMails {
switch sortedMailsValue {
case .SortedMailAsc:
NSNotificationCenter.defaultCenter().postNotificationName("sortedMailAsc", object: nil)
case .SortedMailDec:
NSNotificationCenter.defaultCenter().postNotificationName("sortedMailDec", object: nil)
}
}
}
var sort = "Asc"
@IBAction func sortMails(sender: AnyObject) {
NSNotificationCenter.defaultCenter().postNotificationName("sortedMail" + sort, object: nil)
sort = (sort == "Asc") ? "Dec" : "Asc"
}
提问者想要一个触摸时升序排序,再次触摸时降序排序的按钮。
上面的代码使用一个字符串来保存排序顺序。它被初始化为 "Asc" 用于升序。
触摸按钮时,它会发布一条通知 "sortedMailAsc"。
然后它将排序顺序更改为 "Dec" 以进行降序(这应该是 "Desc" 但发问者使用 "Dec")。
第二次触摸按钮时,代码发布通知 "sortedMailDec" 并将排序顺序更改回 "Asc"。
我们的想法是保持代码简单并避免重复。