Swift3.0之print和debugPrint
一般的枚举,打印时候会显示枚举信息,但是一般的对象,打印的时候只会显示类名称和内存空间了。同OC一样,swift也是依靠重写description来改变打印的内容。只不过,OC的description是重写了方法,Swift是重写了属性。并且可以把这个属性重写的方法写到分类中。在之前Swift版本,是可以通过分类重写CustomStringConvertible协议和CustomDebugStringConvertible协议,修改description来实现。目前版本应该是NSObject自身就遵守了这两个协议,所以会提示重复定义的错误。但是并不影响description的使用。
我们来创建一个Person类:
import UIKit class Person: NSObject { var name : String? var age : Int = 18 } extension Person{ override var description: String { return "Person类对象的名字是:\(self.name),年龄是:\(self.age)" } }
此时创建Person,赋值name和age,打印:
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let p = Person() p.name = "axx" p.age = 18 print(p) } }
结果:
Person类对象的名字是:Optional("axx"),年龄是:18