问题描述
- 为什么cocoa里可以直接使用.Normal 类似语法,自己却不能写?
-
如题,swift中可以如此使用。Normalvar button:UIButton = UIButton(frame:CGRectMake(10,10,10,10))
button.setTitle("Button", forState:.Normal)查看.Norma源码,则是 这样一个结构体:
struct UIControlState : RawOptionSetType {
init(_ rawValue: UInt)
init(rawValue: UInt)static var Normal: UIControlState { get } static var Highlighted: UIControlState { get } // used when UIControl isHighlighted is set static var Disabled: UIControlState { get } static var Selected: UIControlState { get } // flag usable by app (see below) static var Application: UIControlState { get } // additional flags available for application use static var Reserved: UIControlState { get } // flags reserved for internal framework use
}
对于 .Normal 可以这样引用,一直很好奇。这是swift既定语法规则嘛?但是自己试图创建这样一个结构体,却无法成功。还是自己写错了?
我是这样创建的
struct Summation {
static var Normal:Summation? { get { return nil } }
};
class Student{
func setSum(forsm sum:Summation){}
};
var stu = Student()
stu.setSum(forsm:.Normal!) //此处报错球大神解答!
解决方案
http://blog.csdn.net/wxtsmart/article/category/717714
解决方案二:
我怎么觉的应该是枚举,而不是结构体呢?枚举是可以删除前面的东西,直接。xxx这个用的
解决方案三:
你应该有地反写错了,我按照你的方式试了下是可以的运行的
定义:
struct Summation {
static var ANormal:Summation? {
get {
return nil
}
}
}
func setSum(forsm sum:Summation?) {
}
调用:
self.setSum(forsm: .ANormal)
时间: 2024-11-08 20:05:22