更新说明:


Swift 目前已经发布到4.0版本了,以前写的这整个Swift学习系列的文章,有很多的不足之处,我会重新整理整个系列文章,也是相当于重新复习一遍Swift,后面系列文章的改动之处全都会做记号标注,希望能有不一样的收获,也希望能给也在学Swift的你一点点的帮助!

2017年9月1日


公司项目现在暂时还是在使用Object-C在写,Swift虽然面世不是很久,但Swift是苹果更推荐使用的开发语言,估计也是未来开发的趋势,自己以前有接触Swift,但又由于公司的项目赶,也没有时间去好好地学习Swift。现在年底了,项目也进行到一些后期的维护,自己也有时间开充实一下自己了,决定重新开始去学习这款开发语言,也将后面不断地更新自己的学习笔记。

        首先,你懂Object-C的话,Swift最基本的一些概念性的东西就不需要你再去理解了,会为你的学习带来许多的方便!

第一大点,大家需要知道字符串的本质是一个结构体!这点很重要 ,你清楚这一点,后面的许多东西你理解起来就没有那么难了。

首先说两小点:

一: 在Swift中,用 let (注意大小写,Swift的关键字是区分大小写的) 这个关键字来开头定义的是常量!这里的常量和我们平时接触到得常量是相同的,常量就是不可变的变量。

二: 在Swift 中,用 var 这个关键字开头定义的是变量,这里的变量和我们理解的变量也是一个道理,就是可变的量。

我们现在说回我们的字符串:

(一)如下面的情况:

        let zxString="12345667"
var zxstring="12344455"
print(zxString)
print(zxstring)

(二)看看这两个变量的定义,自己想一想,它们的相同和不同点!

再看看下面这个:

        var str2 = String()
if str2.isEmpty
{
print"STR2是空字符 ")
}else
{
print("STR2不是空字符")
}

上面也是字符串的一种定义,为什么能这样子写,就和我上面说的大家记住字符串的本质是有关系的,后面大家理解了就知道为什么能这样子定义了,当上面定义的的确是空字符就像我们在写OC时候的 NSString * String =@"";是一个道理!

(三)字符串,在学OC的时候,无外乎也就是定义和最基本的使用了,上面两点给大家说了怎么定义,下面说使用。

使用的话,就一句话我感觉。OC怎么用你就怎么用!发挥一下你的想象力,再结合OC的知识,Swift 字符串相关的东西你就掌握了,就踏出了你学Swift的第一步!例如我们看看Swift是怎么判断一个字符是不是空字符:

        var str2 = String()
if str2.isEmpty
{
print("STR2是空字符") }else
{
print("STR2不是空字符")
}

代码就这样子,你要理解懂OC的话,你也能看的出来,这里的判断利用了属性 isEmpty ,当然这个属性的返回值也肯定是BOOL类型的。在这里提到BOOL类型了。就顺便给大家说两句BOOL类型。

附加:Obiect-C BOOL 和Swift BOOL 的区别

1:OC中BOOL的值是0,1 或者 YES, NO 或者 true , false ;下面定义后,赋下面的值都是没有问题的!

    BOOL  a;
a=true;
a=YES;
a=1;

2:swift中BOOL的值只有两个 true 和 false 两个值!没有表示真假的 0 和 1 或者 YES ,NO !所以在swift 中你用 0 ,1或者 YES ,NO 判断真假是不行的!

struct Bool
{
/// Default-initialize Boolean value to `false`.
init()
}

这是swift项目中官方对BOOL类型的一个解释,大家可以看看!

说回我们的字符串吧!

第二大点就是字符串的操作:

一:字符串的大小写转换,和OC的一样就不在多说了

二:字符串的拼接:

这个和以前我们学的OC的不一样,在OC中,我们用的是StringWithFormant这个方法。但在swift中,用的是“+”。。对,你没看错,就是加号,如下面这样子

        let Zstring="zhang"
var zxs = "xu"
var Ztring = Zstring + zxs
print(Ztring) // 下面是打印的结果
zhangxu

再顺便给大家说一句,print(Ztring) 和 println(Ztring)  的区别是前面的打印完后不会自动换行,后面的会自己换行,没有其他的区别,大家别太多的纠结在这一点上,就怕会有和我一样喜欢钻牛角尖的朋友,我要不明白我会想的,这到底是怎么回事!!

        var zxs="xuqwqwqwqeqweqeqwe"
       // let index = advance(zxs.startIndex,2, zxs.endIndex) 这个和下面的是一个道理
let index = advance(zxs.startIndex, 2)
var V = zxs.substringFromIndex(index)
print(V)
// 下面的是打印的结果
qwqwqwqeqweqeqwe

再给大家看看这一行代码

    var V = zxs.substringFromIndex(<#index: String.Index#>)

在前面我说了var 开头定义的是变量,能改变,就像我们在OC中操作可变字符串一样。大家先看看上买这行代码,在substringFromIndex这个属性里面,需要的参数类型是String.Index这个类型的。上面的  let index = advance(zxs.startIndex, 2) 就是定义  String.Index 类型的变量,理解advance(zxs.startIndex, 2)的字面意思也就知道这个String.Index 在 substringFromIndex 中发挥的作用了。

Swift 基础部分(建议掌握OC字符串知识的翻阅)的更多相关文章

  1. Swift 2.0 字符串学习笔记(建议掌握OC字符串知识的翻阅)

    自己公司开现在使用OC语言在写,但Swift似乎是苹果更推荐使用的开发语言,估计也是未来开发的趋势,自己以前有接触swift,但又由于公司的项目赶,也没有时间去好好地学习这款开发语言.现在年底了,项目 ...

  2. Swift语法基础入门二(数组, 字典, 字符串)

    Swift语法基础入门二(数组, 字典, 字符串) 数组(有序数据的集) *格式 : [] / Int / Array() let 不可变数组 var 可变数组 注意: 不需要改变集合的时候创建不可变 ...

  3. 3.Swift翻译教程系列——Swift基础知识

    英语PDF下载链接http://download.csdn.net/detail/tsingheng/7480427 Swift是用来开发iOS和OS X应用的新语言,可是很多地方用起来跟C或者OC是 ...

  4. Swift基础之OC文件调用Swift代码(在上次的基础上写的)

    前两天刚写过Swift调用OC,今天在原来的基础上,实现OC调用Swift. 首先,创建一个OneSwiftFile.swift文件,创建一个继承于NSObject的类(这个地方你可以自己选择继承的父 ...

  5. iOS Swift 模块练习/swift基础学习

    SWIFT项目练习     SWIFT项目练习2 iOS Swift基础知识代码 推荐:Swift学习使用知识代码软件 0.swift中的宏定义(使用方法代替宏) 一.视图  +控件 1.UIImag ...

  6. Swift基础学习

    Swift基础学习  http://c.biancheng.net/cpp/html/2242.html 这个网站最近看了一下,对于基本语法解释概括的相对全面,如同重新练习一遍OC似的,挺全面的,谢谢 ...

  7. Swift语言学习(四)字符串与Array等集合的使用

    Swift 提供了C和Objective-C基础类型的自己一套版本,包括用于整型的Int,用于浮点值的Double和Float,用于布尔值的Boolean,和用于文本数据的String.Swift还提 ...

  8. swift基础:第六部分:类与对象

    http://reactnative.cn/docs/0.24/getting-started.html#content(react Native 开发文档) 互联网这个时代,你松懈一天,就会有很多很 ...

  9. Swift基础语法学习总结(转)

    Swift基础语法学习总结 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...

随机推荐

  1. 按时按登录IP记录Linux所有用户操作日志的方法(附脚本)

    PS:Linux用户操作记录一般通过命令history来查看历史记录,但是如果因为某人误操作了删除了重要的数据,这种情况下history命令就不会有什么作用了.以下方法可以实现通过记录登陆IP地址和所 ...

  2. webpack + babel + vue 环境设置

    npm i webpack --save-dev npm install style-loader css-loader url-loader babel-loader sass-loader fil ...

  3. P1217 [USACO1.5]回文质数 Prime Palindromes(求100000000内的回文素数)

    P1217 [USACO1.5]回文质数 Prime Palindromes 题目描述 因为151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数. 写一个程序来找 ...

  4. .net core 项目加载提示项目文件不完整缺少预期导入的解决办法

    今天把在远端的仓库的代码在另一台电脑上拷贝下来,电脑上.net core 环境也已经安装了,但是发现有几个项目没有加载成功,然后重新加载项目,vs2017却提示 项目文件不完整,缺少预期导入 查看错误 ...

  5. Webapp和后端交互检查测试

    除了功能,我们可以使用下面方法,查看交互过程,页面不能发现的问题: 什么是json 什么是json,json是什么,json如何使用 JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能 ...

  6. 拼多多2018校招编程题汇总 Python实现

    题目原址 列表补全 在商城的某个位置有一个商品列表,该列表是由L1.L2两个子列表拼接而成.当用户浏览并翻页时,需要从列表L1.L2中获取商品进行展示.展示规则如下: 用户可以进行多次翻页,用offs ...

  7. 一些echarts的基本图形

    先拿一个图形渲染过程举例 引用处 <bar ref="ARPUChart" v-if="ARPUChart" style="width:500p ...

  8. Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] E 三分+连续子序列的和的绝对值的最大值

    E. Weakness and Poorness time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  9. docker 集群 flannel网络构建

    先保证集群状态是正常的 集群管理 kubelet 在创建pod 时会先下载一个pause 镜像,这个镜像用于容器基础网络管理非常重要: 每个node 节点都要执行该操作: iptables -P FO ...

  10. 预编译scss以及scss和less px 转rem

    预编译scss步骤: 1 搜索ruby并安装,点击 2 安装sass: 3 在hubuilder工具中设置预编译: 触发命令地址为ruby安装地址 命令参数为 %FileName% %FileBase ...