赵雅智_Swift(4)_断言

可选可以让你判断值是否存在,你可以在代码中优雅地处理值缺失的情况。然而,在某些情况下,如果值缺失或者值并不满足特定的条件,你的代码可能并不需要继续执行。这时,你可以在你的代码中触发一个断言(assertion)来结束代码运行并通过调试来找到值缺失的原因。

使用断言进行调试

断言会在运行时判断一个逻辑条件是否为true。从字面意思来说,断言“断言”一个条件是否为真。你可以使用断言来保证在运行其他代码之前,某些重要的条件已经被满足。如果条件判断为true,代码运行会继续进行;如果条件判断为false,代码运行停止,你的应用被终止。

如果你的代码在调试环境下触发了一个断言,比如你在 Xcode 中构建并运行一个应用,你可以清楚地看到不合法的状态发生在哪里并检查断言被触发时你的应用的状态。此外,断言允许你附加一条调试信息。

你可以使用全局assert函数来写一个断言。向assert函数传入一个结果为true或者false的表达式以及一条信息,当表达式为false的时候这条信息会被显示:

let age = -3
assert(age >= 0, "A person's age cannot be less than zero")
// 因为 age < 0,所以断言会触发 

在这个例子中,只有age >= 0为true的时候代码运行才会继续,也就是说,当age的值非负的时候。如果age的值是负数,就像代码中那样,age >= 0为false,断言被触发,结束应用。

断言信息不能使用字符串插值。断言信息可以省略,就像这样:

assert(age >= 0) 

何时使用断言

当条件可能为假时使用断言,但是最终一定要保证条件为真,这样你的代码才能继续运行。断言的适用情景:

  • 整数的附属脚本索引被传入一个自定义附属脚本实现,但是下标索引值可能太小或者太大。
  • 需要给函数传入一个值,但是非法的值可能导致函数不能正常执行。
  • 一个可选值现在是nil,但是后面的代码运行需要一个非nil值。

请参考附属脚本和函数。

注意:断言可能导致你的应用终止运行,所以你应当仔细设计你的代码来让非法条件不会出现。然而,在你的应用发布之前,有时候非法条件可能出现,这时使用断言可以快速发现问题。

时间: 2024-11-08 22:57:59

赵雅智_Swift(4)_断言的相关文章

赵雅智_android实例_当监听类有数据更新时下拉刷新

之前两篇文章分别介绍了OnScrollListener的实现和ContentProvider监听数据的变化,下面我们就结合者两个知识点实现一个小项目 项目需求 使用当ContentProvider监听类有数据更新时,在当前界面进行提示,并用OnScrollListener实现下拉刷新 实现效果 通过ContentProvider显示数据在界面 当监听类发生变化时 下拉刷新后显示数据 实现步骤 android_sqlite项目 定义操作标识 匹配结果码 继承ContentProvider类重写方法

赵雅智_Android案例_刮刮乐

实现效果 主要代码 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <I

赵雅智_Swift(2)_swift常量和变量

分号 Swift 并不强制要求你在每条语句的结尾处使用分号(;) 你打算在同一行内写多条独立的语句必需要用分号 let cat = "? ?? ? "; println(cat) // 输出 "?? ?? " 常量和变量把一个名字(比方maximumNumberOfLoginAttempts或者welcomeMessage)和一个指定类型的值(比方数字10或者字符串"Hello")关联起来.常量的值一旦设定就不能改变,而变量的值能够任意更改. 声

赵雅智_Swift(3)_swift凝视

请将你的代码中的非运行文本凝视成提示或者笔记以方便你将来阅读. Swift 的编译器将会在编译代码时自己主动忽略掉凝视部分. 单行凝视 以双正斜杠作(//)为起始标记: // 这是一个凝视 多行凝视 其起始标记为单个正斜杠后尾随一个星号(/*).终止标记为一个星号后尾随单个正斜杠(*/): /* 这是一个, 多行凝视 */ 多行凝视块 Swift 的多行凝视能够嵌套在其他的多行凝视之中.你能够先生成一个多行凝视块.然后在这个凝视块之中再嵌套成第二个多行凝视.终止凝视时先插入第二个凝视块的终止标记

赵雅智_Swift(1)_swift简介及类型

Swift 是 iOS 和 OS X 应用开发的一门新语言. 如果你有 C 或者 Objective-C 开发经验, Swift 的很多内容都是你熟悉的. Swift 的类型是在 C 和 Objective-C 的基础上提出的 Int是整型 Double和Float是浮点型 Bool是布尔型 String是字符串 Swift 还有两个有用的集合类型,请参考集合类型. Array Dictionary 元组(Tuple): Swift 还增加了 Objective-C 中没有的类型. 元组可以让你

赵雅智_Swift(3)_swift注释

请将你的代码中的非执行文本注释成提示或者笔记以方便你将来阅读.Swift 的编译器将会在编译代码时自动忽略掉注释部分. 单行注释 以双正斜杠作(//)为起始标记: // 这是一个注释 多行注释 其起始标记为单个正斜杠后跟随一个星号(/*),终止标记为一个星号后跟随单个正斜杠(*/): /* 这是一个, 多行注释 */ 多行注释块 Swift 的多行注释可以嵌套在其它的多行注释之中.你可以先生成一个多行注释块,然后在这个注释块之中再嵌套成第二个多行注释.终止注释时先插入第二个注释块的终止标记,然后

赵雅智_运用Bitmap和Canvas实现图片显示,缩小,旋转,水印

上一篇已经介绍了Android种Bitmap和Canvas的使用,下面我们来写一个具体实例 http://blog.csdn.net/zhaoyazhi2129/article/details/32136179 运行效果: 主要代码 package com.example.guaguale; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import and

赵雅智_使用SQLiteDatabase提供的增删改查方法及事务

知识点详解:http://blog.csdn.net/zhaoyazhi2129/article/details/9026093 MainActivity.java,User.java,BaseDao.java,UserDao.java同上篇 http://blog.csdn.net/zhaoyazhi2129/article/details/28640195 UserDaoImple.java package com.example.android_sqlite.dao.impl; impor

赵雅智_通过fragment对布局进行改变

项目需求 设置两个片段,昨天片段对右边进行颜色更改,片段替换的操作 实现效果 点击片段1:改变片段1的颜色值 点击片段2替换片段1 实现步骤 新建主activity并在布局添加两个片段 左片段 对片段1进行颜色值改变的点击事件 获取FragmentManager对象,只要获取FragmentManager对象就能获取fragment对象 根据FragmentManager对象的findFragmentById方法来获取指定的fragment 获取Fragment中的布局文件 获取view中任何控