Swift4.0【Optional String 类型 强制拆包】
来源:互联网 发布:贵州广电网络节目表 编辑:程序博客网 时间:2024/06/07 02:03
Swift4.0中 String的 Optional在String作为urlString去初始化url并进行网络访问时,会出现url为Optional包string的错误情况
如:在AFNetwork3.1的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类型但是Swift4.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!)")
[objc] view plain copy
- //
- // ViewController.swift
- // test_swift4.0_Optional_01
- 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.1的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类型(称为隐式封包)
- //这点是Swift4.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
- Swift4.0【Optional String 类型 强制拆包】
- Swift3.0 Optional String 类型 强制拆包
- 【Swift4.0】可选类型
- 【Swift4.0】集合类型-Array
- 【Swift4.0】集合类型-Set
- 【Swift4.0】集合类型-Dictionary
- 【Swift4.0】类型安全和类型推断
- Swift-可选类型(Optional)以及解包
- Swift4.0闭包 (重要)
- swift 可选类型,强制拆包,隐性拆包
- String强制类型转换问题
- Swift4.0新特性之String、Array和Dictionary
- 10.可选类型optional(解包和绑定)
- toString() 和 强制类型转换 (String)
- toString() 和 强制类型转换 (String)
- String类型强制转换的方法
- swift中的可选类型Optional?、解包!和隐式解包的可选类型的用法
- toString() / String.valueOf() VS 强制类型转换 (String)
- 数据库可靠性/可用性、稳定性RTO/RPO
- 二分查找
- 使用EL内置对象获取JSP内置对象的数据
- 基于UDP的P2P聊天工具——0.1
- 蓝桥杯 小朋友排队(线段树+逆序数的理解)
- Swift4.0【Optional String 类型 强制拆包】
- YouCompleteMe添加C++11支持
- String类3
- 一个程序员的自述
- 摄像机标定学习笔记(8) 非线性模型
- CMIS讲解
- 又是undefined reference to xxx ------库顺序问题
- 笔试查漏补缺17.9.30
- 接口----应用