【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记8 String、Type Conversion、Assertions

简介: 处理字符串的难点是字符串的索引和创建字符串等其他的问题以及如何创建一个字符串的子串。字符串是由Unicode组成的,你不要把Unicode组成的字符串的子串看做Unicode字符,而是把它们拆分成Unicode字素,所以我们不能像数组中那样索引,因为会遇到有的字素是由多个字符组成,这样会把一个完整语义的字素拆成了两个字符从而改变了原意。

处理字符串的难点是字符串的索引和创建字符串等其他的问题以及如何创建一个字符串的子串。


字符串是由Unicode组成的,你不要把Unicode组成的字符串的子串看做Unicode字符,而是把它们拆分成Unicode字素,所以我们不能像数组中那样索引,因为会遇到有的字素是由多个字符组成,这样会把一个完整语义的字素拆成了两个字符从而改变了原意。所以字符串是由另外的一个类型来索引的,这种类型就是String.index。注意advance这是个函数,并不是方法,它会跳过整个字素而不是一个字符。如示例中所示index会输出“l”。

另外字符串中的splice和数组中的splice很像,将一个字符串合并到另一个字符串当中。示例中s的值现在变成了heabcllo。

最后我们使用range可以得到s的子串,在截取起始终止位置的时候不能直接用Int,依旧必须采用advance的办法,如示例中最后截取的子串为eabcl。


还记得之前在计算器项目中使用的rangeOfString方法么,它会返回一个Optional类型的Range。我们可以利用整个方法来获取字符串中的子串,比如第一个示例获取一个浮点数的小数部分。或者把这部分替换或者删除,但前提都是获取你需要的range。


String还有些其他的方法,都是基于字符串的索引的,有我们之前见过的description、join方法。值得注意的是字符串操作中只有toInt而没有toDouble,因为Double的结构比较复杂,你需要指定一些细节诸如小数点后面有多少位等等,需要额外的参数。但是Int就不存在,当然toInt的返回值是可选型,如果你让“hello”调用toInt,那么很明显会返回一个nil。


还有一些通过初始化实现类型转换的方法。比较有趣的是你可以通过初始化方法实现数组和字符串的互转,不过要注意转换后的数组的元素是字符串中的Unicode字符。

我们也可以通过\()调用的方法把浮点数转换成字符串。

最后再讲一个debug相关的方法。Assertions


assert这个方法接受一个闭包作为其第一个参数,第二个参数是一个字符串,加入第一个闭包返回的是一个false,那么这个字符串就会被打印到中控台上。

如示例中我们希望某个函数不为空,如果为空会把程序搞崩溃,使用assert,当这个函数为空的时候,会把后面的字符串打印到中控台,这样你就知道哪里出问题了。


目录
相关文章
|
前端开发 iOS开发
【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记3 Xcode、Auto Layout及MVC
   继续上一话中的计算器Demo,上一话讲到类必须被初始化,类中的属性也必须被初始化,所以你不能只声明而不给它一个处置,那么问题来了,我们从storyboard中拖拽的@IBOutlet为什么只有声明而不需要初始化呢,这是因为它的类型依旧是一个optional,在你初始化之前已经被赋值为nil了,这也就是为什么你不需要再初始化它的原因。
943 13
|
前端开发 API
【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记4 MVC enum Tuple Dictionary
 回顾一下我们上一话中的代码: @IBAction func operate(sender: UIButton) { let operation = sender.
868 0
|
Unix iOS开发
【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记1 IOS8概述
  首先感谢网易公开课和SwiftV课堂的朋友们辛苦翻译,这个系列是我学习斯坦福IOS8公开课的个人心得体会和笔记,希望能给大家带来启发。
1130 0
|
iOS开发
iOS: ARC & MRC下string内存管理策略探究
ARC & MRC下string内存管理策略探究       前两天跟同事争论一个关于NSString执行copy操作以后是否会发生变化,两个人整了半天,最后写代码验证了一下,发现原来NSString操作没我们想的那么简单,下面就让我们一起看看NSString和NSMutableString在MRC下执行retain,copy,mutableCopy,以及ARC下不同的修饰__weak, __strong修饰赋值究竟发生了什么。
1155 0
|
12月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
10月前
|
iOS开发 开发者
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
600 67
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
|
9月前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
356 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
11月前
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
321 66
|
9月前
|
人工智能 程序员 API
iOS|记一名 iOS 开发新手的前两次 App 审核经历
啥,这玩意也有新手保护期?
231 0
|
11月前
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
1046 11

热门文章

最新文章