加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift3.0 Optional String 类型 强制拆包

发布时间:2020-12-14 06:22:37 所属栏目:百科 来源:网络整理
导读:/** Swift3.0 中 String 的 Optional 在 String 作为 urlString 去初始化 url 并进行网络访问时,会出现 url 为 Optional 包 string 的错误情况 如:在 AFNetwork3.0 的 get 请求中使用 Optional 类型的 String 时,会有如下错误: //NSErrorFailingURLStrin

/**

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 UIKit

class 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.
    }


}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读