九、swift3.0可选类型+类型修饰符及其它

来源:互联网 发布:淘宝网建达巧克力 编辑:程序博客网 时间:2024/05/21 02:20

一、可选项


在swift中所有类型默认都不接收nil值,如果需要让某种数据类型能接收nil值,则需要把该类型数据包装成可选类型。

1、?后缀:必须强制解析才可以获取包装的值

2、!后缀:隐式解析即可获取包装的值


二、类型转换



三、swift中的私有化

private:通过它修饰属性和函数,从达到它们只能在当前类或类扩展中使用

fileprivate:即文件内私有,只要在同一个文件里,那么这个文件里的属性和函数都可以被访问

@objc:用于修饰swift中的可选方法,可以让函数运行时以oc的运行时机制被调用,常用于#Selector调用的方法


四、swift中使用URL的%转码

// 注:在swift中“\”本身就是转义字符,需要通过“\”再转义        // ' \' 字符不允许在 Url 中,所以他们必须是 URL 编码        let urlString: String?  = "/Volumes/HD\\ 扩展/SourceTreeCode/ZMWebProduct/main.json"        let escapedString = urlString?.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)                let fileUrl = NSURL.fileURL(withPath: escapedString!)把数组写入到磁盘中,并以json的格式保存起来let array : [[String : Any]] = [            ["clsName":"ZMHomeViewController", "title":"首页", "imageName":"home",             "visitorInfo":["imageName": "", "message":"关注一些人,回这里看看有什么惊喜"]        ]        // 将界面配置数据输出到json,数组 ————> json序列化        let data = try! JSONSerialization.data(withJSONObject: array, options: [.prettyPrinted])        let urlString: String?  = "/Users/czm/Desktop/01-test/deom.json"                (data as NSData).write(toFile: urlString!, atomically: true)把数组以plist的形式写入到磁盘中// 把配置信息保存到沙盒        (array as NSArray).write(toFile: "/Volumes/HD\\ 扩展/SourceTreeCode/ZMWebProduct/demo.plist", atomically: true)


五、类型成员的修饰符

1、static和class修饰符

在枚举、结构体中定义的属性、方法使用static属性,即可将它们变成类型属性、类型方法;

enum Season : Character {        case Spring = "S"        case Summer = "U"        case Fall = "F"        case Winter = "W"                static var desc : String?        static let name = "季节"                static var info: String {            get {                return "代表季节的枚举\(desc ?? "")"            }                        set {                print("对info计算属性赋值:\(newValue)")            }        }    }

Season.desc = "季节"Season.info = "新的季节"


在类中定义的属性、方法使用static或class修饰 ,可将它们变成类型属性、类型方法

在类中通过class或者static修饰的属性或方法的区别在于:

使用static修饰的类型属性、类型方法,不能被子类重写;而class修饰的可以被子类重写。

注意:在类型存储属性时,只能用static修饰;在类型计算属性class和static都可修饰

lass Person {        //类型计算属性用static、class均可修饰    class var name : Int {        get {            return 3        }                set {            print("对name计算属性赋值\(newValue)")        }    }            //类型存储属性只能用static修饰    static var nation : String!            class func sum(x : Int, y : Int) -> Int {        return x + y    }            static func agave(result: Double) -> Double {        return result / 3.0    }}




 
原创粉丝点击