初接触 Swift

// Swift 没有 main 函数 没有占位符  OC 中的字符串 数组 字典等都要用到 @ 但 Swift 中都不在用 @

// 常用的数据类型
let b1:Int = 10
let b2:Double = 1.22
let b3:String = "sdf"
var b4:Character = "a"

// 求字符串的长度
  // 与 OC 不同 ???
    // OC 直接 .count就可以获取字符串长度 而 Swift 是先获取字符串中所有的字符 在获取个数
var str = "string"
//print(str.characters.count)

// 拼接字符串
  // 与 OC 不同
    // OC 是用 stringWithFormat:拼接  或者 appendingWithString:
    // Swift 分以下两种
// 1> 字符串与字符串拼接
var str1 = "good"
var str2 = "morning"
//print("\(str1)\(str2)") // 或者如下
str1 += str2
//print(str1)
// 2> 字符串与字符拼接
let s:Character = "a"
str.append(s)
//print(str)

// 是否相等 ==
  // OC 中 基本数据类型用 ==   字符串用 isEqualToString: 如果 if 判断 if 后面没有其他的选择时 大括号 可以省略
  // Swift 中 无论是字符串还是基本数据类型都是用 ==   其中 if判断中 if 后面的 小括号 可以 省略 但 大括号 必须保留
if (str == "good") {
    print(str)
}

// 前缀/后缀
str.hasPrefix("st")
str.hasSuffix("ing")

// 大小写转换
var str3 = "GOOGLE"
print("转换成小写的\(str3.lowercaseString)")
print("转换成大写的\(str3.uppercaseString)")

// 字符串支持遍历
for item in str3.characters {
    print(item)
}

// 将 Swift 字符串转换成 OC 对象
let str4 = str3 as NSString
print(str3)

// 数组
// 创建数组 一定要指定元素的数据类型

var array:[String] = ["1", "2", "3"]
// 添加元素
array.append("4")
// 删除
array.removeAll() // 移除所有元素 包括数组开辟的空间 array = nil
array.removeAll(keepCapacity: true) // 移除所有元素 但 保留数组开辟的空间 array.count = 0
array.removeAtIndex(2) // 移除对应下标下的元素
array.removeFirst() // 移除第一个元素
array.removeLast() // 移除最后一个元素
// 数组的遍历
for item in array {
    print(item)
}
// 元组遍历
for (index, value) in array.enumerate() {
    print("index=\(index), value=\(value)")
}
print(array.count) // 数组个数
// 合并数组
var arrar1:[String] = ["mi", "33"]
array += arrar1

// 字典
// 创建字典也要指出字典的类型 用[] 没有 {}
var dic:[String:AnyObject] = ["1": "you", "2": "wo"]
var dic1:[String:AnyObject] = ["2": "f", "3": "sss", "5": "sdf"]
// 增加和更新键值对
dic["3"] = "mm" // 如果字典中有这个 key 那就是更新 如果没有就是 添加
// 删除键值对
dic.removeAll() // 移除所有元素 包括数组开辟的空间 dic = nil
dic.removeAll(keepCapacity: true) // 移除所有元素 但 保留数组开辟的空间 dic.count = 0
dic.removeAtIndex(dic.indexForKey("1")!) // 注意此处的 !   移除对应下标下的元素
dic.removeValueForKey("1") // 移除对应下标下的元素
// 普通便利
for item in dic.enumerate() {
    print(item)
}
// 元组遍历
for (index,value) in dic.enumerate() {
    print("index=\(index), valu=\(value)")
}
print(dic.keys) // 所有 key
print(dic.values) // 所有 value
// 合并两个字典
for item in dic.keys {
    dic1[item] = dic[item]
}

// 可选类型
// 可选类型: 如果一个值有可能是空 也有可能有值 那这个值就是一个可选类型   可选类型用 ? 表示
// 可选类型不能直接参与运算 要先强制解包(wrapped)  用!表示
// warning 在对一个可选类型类型进行解包之前必须确认这个可选值不为 nil
// unexpectedly found nil while unwrapping an Optional value 说明对要对 nil 强制解包
// 在模型里面所有的基本数据类型不可以为可选类型 否则会在字典传模型的时候找不到 key 解决方法 给可选类型一个默认值 0
var c1:Int? = 1
let c2 = 2
let c3 = c1! + c2
print(c3)

// ?? 空运算标识符
// 作用: 如果可选类型值不为空 ?? 会自动帮我们解包再参与运算 如果是可选类型值为空 就是用 ?? 后面提供的默认值进行运算
var value:Int?
let value1 = (value ?? 5) + 10
print("value1 = \(value1)")

// 枚举
enum Month:String {
    // 第一种方式
    case January = "一月"
    case February = "二月"
    case Match = "三月"
    // 第二种方式
//    case January, February, Match
}
var month = Month.February
month = .February
print("month=\(month.rawValue)") // 用于获取 枚举值对应的 默认值(一月 二月 三月)
print("month=\(month.hashValue)") // 获取枚举值对应的 index

// 控制流

// if语句
// Swift 中没有非0即真的概念
let a = 10
if a > 3 {
    print(a)
}

// if let
// if let 先判断可选类型器是否为空 不为空创建一个局部常量来接收此时可选类型的值 在执行代码块 否则就不执行代码块 相当于 if a == 10 {} else {}
var aa:Int?
if let b = aa {
    print(b)
}
// if let where
// 对定义出来的常量在进行一次判断
if let bb = aa where bb > 9 {
    print(bb)
}

// guard 守护
// 是用来判断可选类型是否有值 没值就执行 else  类似于 if let
func demo() { // 无参无返函数
    var a10:Int? = 11
    guard let d = a10 else {
        print("nil")
        return
    }
    print(d)
}
demo() // 调用

// switch
// switch 后面的小括号 可以省略 case 后面不用写 break 不会造成穿透效果 default 必须添加 而且只能添加在最后 case 后面只有一条语句 {}可以省略
// switch 不在想 OC 那样只局限与整形的选择 字符串 浮点型 等都可以
// 整形表示
let a1 = 10
switch a1 {
case 2:
    print("a = 2")
case 10:
    print("a = 10")
default:
    print("nil")
}

// 字符串表示
let string = "Beautiful"
switch string {
    case "sdb":
    print("nil")
    case "Beautiful":
    print(string)
default:
    print("Happyness")
}

// for 循环
// 写法 1
var i = 0
for i = 0; i < 10; i++ {
    print(i)
}
// 写法 2
for i in 0...10 { // 书写格式必须这样写
    print(i)
}
// 写法 3
for i in 0..<10 {  // 书写格式必须这样写
    print(i)
}
// while
var j = 10
while i > 1 {
    i--
}
// 在 Swift 中没有do while

时间: 2024-10-06 05:33:52

初接触 Swift的相关文章

【瞎折腾系列】mysql存储过程初接触

开始[瞎折腾系列],这个系列纯属瞎折腾,可能没有什么实际意义. mysql存储过程生成表: 新建一张user表,包含id, username , password , usertable字段. 然后创建存储过程: create PROCEDURE create_table() BEGIN DECLARE n int DEFAULT 0; DECLARE t_error INTEGER DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET

cglib初接触

直接上代码吧. pom添加依赖: <dependencies> <dependency> <groupId>cglib</groupId> <artifactId>cglib-nodep</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>org.ow2.asm</groupId

linux的初接触

最初衷:当自己的才能不能支配起内心的梦想时,便需要静下心来读读书.知道linux算一个巧合,但既然选择,那便努力一把.这是我的第一篇博文,也是我正式接触linux的所学.愿与大家共勉. ---Aolens 一,Linux比较常见的几个版本以及他们包含的常见的分支: 1,  Debian:ubuntu 2,  Slackware:s.u.S.E 3,  Redhat:CentOS,Fedora,HREL(centos的社区版,由centos调试一些软件是否成功来添加到HREL中         )

MyBatis初接触

参考MyBatis官方文档. 基本开发步骤: 一.导包,mybatis-3.2.7.jar: 二.编写实体类Customer.java(与数据库表对应): 三.编写实体类对应的mapper接口CustomerMapper.java(定义实体类的操作): 四.编写实体类对应的mapper,Customer.xml(接口中的方法名与mapper中的操作的id名要一致): 五.编写mybatis-config.xml: 六.在mybatis-config.xml中注册mapper: 七.从xml获取S

jfinal初接触,一个简单的文件上传例子

写了个上传的小例子. 从jfinal官网下载jfinal-1.8_demo_for_jsp.zip 然后下载jfinal-1.8-lib.zip 按要求删掉该删除的,引入一些包,之后的项目结构: DemoConfig.java中配置路由,只留下了根路径: /** * 配置路由 */ public void configRoute(Routes me) { me.add("/", CommonController.class); //me.add("/blog", B

java8 lambda表达式初接触

环境是jdk8 代码如下: package memTest; /** * Created by PC on 2014/8/5. */ public class LambdaOne { public static void test(){ new Thread(()-> System.out.print("hi") ).start(); } public static void main(String[] args) { new LambdaOne().test(); } } ja

vi初接触

它有三种模式: 一 一般模式 二 编辑模式 三 命令行模式 介绍几种比较常用的吧 -- 退出:q 写入:w 强制:! (以上可叠加) 显示行号:set nu 取消:set nonu 跳转到n行:nG 最后一行:G 第一行:gg(=1G) 向某个方向移动n个字符: 方向可以用方向键,也可以用 h(左),k(上),l(右),j(下) #向右移动5个字符 eg:5l 寻找词语:/word(向下) ?word(向下) 寻找x,y行之间的单词并替换:x,ys/word/WORD/g (加C可询问处理) #

【Centos 7】------ SaltStack 初接触

最近学习了saltstack,初接触,发现他好强大,有多强大? 说不好,我只接触了冰山一角,但已经够我喝一壶的了. 接下来,将探究saltstack的世界,能发现多少新大陆,看自己的能力啦! saltstack 介绍: Salt,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯. salt底层采用动态的连接总线,使其可以用于编配,远程执行, 配置管理等等. 一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的报

软工实践练习-Git初接触

第一次听到Git,有点不知所云,听了实践课老师的讲解,才明白了Git作为最先进的分布式版本控制系统的重要性. 至于Git的安装和使用仍旧是自己摸索着去完成了,当然在这过程中也是遇到了很多的问题. 接下来就谈谈Git初接触的心得 1.注册 首先是要在https://github.com/上注册一个自己的账号,账号的注册就没什么可说的.填写用户名,邮箱,密码,然后sign up,这步是在机房时完成的. 2.Git的安装 下载Git,有很多的版本可以选择,我这边下载的是Git-2.5.1-64-bit