Swift3.0 Optional String 类型 强制拆包

来源:互联网 发布:jersey框架 get json 编辑:程序博客网 时间:2024/06/08 14:24

        /**

         Swift3.0 String OptionalString作为urlString去初始化url并进行网络访问时,会出现urlOptionalstring的错误情况

         如:在AFNetwork3.0get请求中使用Optional类型的 String时,会有如下错误:

         //NSErrorFailingURLStringKey=Optional(http://api.test.com/api/getcommon.php)?bundleId=com.dddd

         所以要避免urlStringOptional类型 

         String类型转为Optional String类型为封包

         Optional String类型强制转换为String类型成为强制拆包

         */

        

        //封包显式封包

        let urlStrOptional:String? = "http://api.test.com/api/getcommon.php";

        print("the urlStrOptional is\(urlStrOptional)")

        //输出为:the urlStr is Optional("http://api.test.com/api/getcommon.php")不能作为urlString 去发送url请求

        


        //封包隐式封包

        //此处需要注意虽然在定义urlStr时定义为非Optional类型但是Swift3.0在使用 '=' 赋值时,左边的变量会被自动转换为Optional类型(称为隐式封包)

        //这点是Swift3.0的一个特点需要特别注意!!!

        let urlStr:String! = "http://api.test.com/api/getcommon.php";

        print("the urlStr is\(urlStr)")

        //输出为:the urlStr is Optional("http://api.test.com/api/getcommon.php")不能作为urlString 去发送url请求

        

        //强制拆包

        //String被隐式封包时如果要作为初始化URLString时,必须要进行强制拆包,强制拆包为Optional类型的String参数后加上 '!'

        //上面的 urlStr已经被隐式封包 此处进行强制拆包

        //urlStrOptional! urlStr! 可作为初始化URLString因为urlStrOptional! urlStr!进行了强制拆包

        print("the urlStrOptional is\(urlStrOptional!)")

        print("the urlStr is\(urlStr!)")


////  ViewController.swift//  test_swift3.0_Optional_01////  Created by jeffasd on 17/3/15.//  Copyright © 2017年 jeffasd. All rights reserved.//import UIKitclass ViewController: UIViewController {    override func viewDidLoad() {        super.viewDidLoad()        // Do any additional setup after loading the view, typically from a nib.    }        override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {                /**         Swift3.0中 String的 Optional在String作为urlString去初始化url并进行网络访问时,会出现url为Optional包string的错误情况         如:在AFNetwork3.0的get请求中使用Optional 类型的 String时,会有如下错误:         //NSErrorFailingURLStringKey=Optional(http://api.test.com/api/getcommon.php)?bundleId=com.dddd         所以要避免urlString为Optional类型          将 String类型转为Optional String类型为 封包         将Optional String 类型强制转换为String类型 成为强制拆包         */                //封包 显式封包        let urlStrOptional: String? = "http://api.test.com/api/getcommon.php";        print("the urlStrOptional is \(urlStrOptional)")        //输出为:the urlStr is Optional("http://api.test.com/api/getcommon.php") 不能作为urlString 去发送url请求                //封包 隐式封包        //此处需要注意虽然在定义urlStr时定义为非Optional类型但是Swift3.0在使用 '=' 号 赋值时,左边的变量会被自动转换为Optional类型(称为隐式封包)        //这点是Swift3.0的一个特点 需要特别注意!!!        let urlStr: String! = "http://api.test.com/api/getcommon.php";        print("the urlStr is \(urlStr)")        //输出为:the urlStr is Optional("http://api.test.com/api/getcommon.php") 不能作为urlString 去发送url请求                //强制拆包        //当String被隐式封包时 如果要作为初始化URL的String时,必须要进行强制拆包,强制拆包为 在Optional类型的String参数后加上 '!' 号        //上面的 urlStr 已经被隐式封包 此处进行强制拆包        //urlStrOptional! 和 urlStr! 可作为初始化URL的String 因为urlStrOptional! 和 urlStr!进行了强制拆包        print("the urlStrOptional is \(urlStrOptional!)")        print("the urlStr is \(urlStr!)")                    }    override func didReceiveMemoryWarning() {        super.didReceiveMemoryWarning()        // Dispose of any resources that can be recreated.    }}


0 0
原创粉丝点击