/**

16.6-可选链不会增加可选类型的可选性

我们知道我们通过可选链请求的数据最终会被系统封装成一个可选类型的数据,

考虑一个特殊的情况,如果我们通过可选链请求的数据本身就是一个可选值,那么这个时候系统会怎么做呢?

那系统会把我们这个可选值再封装一层成为可选值的可选值吗?

那到底系统是怎么做的呢?

*/

var x: Int? = 10

var y: Int?? = x

print("x==\(x)")

print("y==\(y)")

/**

x==Optional(10)

y==Optional(Optional(10))

所以说存在 可选值 的可选值

*/

/**

当通过可选链请求的数据为可选类型时可选链的返回值情况。

*/

class CreditCard {

var number: Int

init(number: Int) {

self.number = number

}

}

class Person {

var card: CreditCard?

init(card: CreditCard) {

self.card = card

}

}

var card: CreditCard? = CreditCard.init(number: 233)

var ccard: CreditCard?? = card

print("card==\(card)")

print("ccard==\(ccard)")

/**

card==Optional(swiftLearn15.TestVC5.(viewDidLoad () -> ()).(CreditCard #1))

ccard==Optional(Optional(swiftLearn15.TestVC5.(viewDidLoad () -> ()).(CreditCard #1)))

*/

var p0: Person? = Person.init(card: CreditCard.init(number: 99877))

// 可选链 请求可选类型的数据 ,返回的仍然是一个可选值。不会增加它的可选性,成为可选值的可选值。

print("p0?.card==\(p0?.card)")

/**

p0?.card==Optional(swiftLearn15.TestVC5.(viewDidLoad () -> ()).(CreditCard #1))

*/

16.6 Swift可选链不会增加可选类型的可选性的更多相关文章

  1. ios7 – 如何使用默认的IOS映像

    嗨,我是IOS开发的新手.我知道如何在IOS应用程序中使用图像.但是我不知道如何使用默认图像,如开发者站点中提到的共享或书签图标.我想用它们我必须下载这些图像集或那些可用在xcode?

  2. 动态模拟iOS动态类型系统文字大小(UIContentSizeCategory)

    解决方法多么尴尬!

  3. iOS上使用的UTImportedTypeDeclarations和UTExportedTypeDeclarations是什么?

    解决方法UTExportedTypeDeclarations您可以使用UTExportedTypeDeclarations定义您自己的应用程序想要教授其安装系统的UTI.UTI描述了一段数据(不一定是位于文件中的数据!

  4. swift 字符串创建类

    先看个OC的swift

  5. 1.2 Swift基本数据类型

    /**基本数据类型:整数类型和小数类型IntInt8Int16Int32Int64UIntUInt8UInt16UInt32UInt64*/letinteger:Int=10//-19的话系统会自动报错letunInteger:UInt32=19print(integer)print(unInteger)//溢出也有自动提示的//letoverValue:UInt8=UInt8.max+1;//p

  6. 16.6 Swift可选链不会增加可选类型的可选性

    那系统会把我们这个可选值再封装一层成为可选值的可选值吗?=xprintprint/**x==Optionaly==Optional所以说存在可选值的可选值*//**当通过可选链请求的数据为可选类型时可选链的返回值情况。=Person.init//可选链请求可选类型的数据,返回的仍然是一个可选值。不会增加它的可选性,成为可选值的可选值。

  7. Swift 系统分享视频UIActivityViewController

    如果我们需要自定义服务类型,就需要创建个CustomUIActicity,继承UIActivity同时需要复写如下方法activityType是提供的服务类型的标识符,一般返回自定义的类名。activityTitle、activityImage自定的服务的标题和logo。canPerform对分享的内容做下预判断,看是否需要进行分享。prepare点击分享按钮后,对分享进行操作。

  8. android – 在AppWidget Provider中获取首选项

    我似乎无法从appwidgetprovider类中读取首选项.我的代码在Activity中工作,但它不在appwidgetprovider中.这是我用来回读布尔值的代码:但是,我得到“方法getSharedPreferences(String,int)未定义类型小部件”错误(小部件是我的appwidgetprovider类的名称).在此先感谢您的任何建议!解决方法getSharedPreferen

  9. CentOS6.5系统自定义RPM包实践

    RPM是一个开放的软件包管理系统。redhat软件公司鼓励其它厂商来了解RPM并在自己的产品中使用它。RPM的发布基于GPL协议。在软件包升级过程中,RPM会对配置文件进行特别处理,绝对不会丢失以往的定制信息。RPM另一个强大的功能是进行软件包的验证。

  10. sigar在Centos和Windows下使用java系统软硬件配置信息

    背景本来这个网上一大堆实在没什么想写的,但是好像大多数都是互相抄袭的,在centos根本上用不了,因此我整理下自己具体实现的步骤。

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部