美文网首页
#1极速学习Swift

#1极速学习Swift

作者: Bryant_2423 | 来源:发表于2017-08-23 11:07 被阅读0次

Swift这门语言我不想多介绍了,只要你有一定的编程基础,学习swift将会是一个轻松愉快的过程。

本次的内容:

  • 变量,常量与类型推断
  • 基本字符串操作
  • 数组
  • 字典
  • 集合
  • 方法
  • 控制流

变量,常量与类型推断

Swift中,定义变量使用var, 常量使用let. 比如:

var variable:String = "Hello,Swift!"
let constant:Int = 100

Swift中的基本类型为几下几种:

  • Int
  • Double
  • Bool
  • String

Swift有一个特性——类型推断
也就是说Swift可以自动推导出你所给的变量是什么类型!那么上面两行代码可以改为:

var variable = "Hello,Swift!"
let constant = 100

基本字符串操作

定义2个字符串:

let message1 = "Swift is awsome! "
let message2 = "What do you think? "

如何连接两个字符串?+即可:

let message1 = "Swift is awsome! "
let message2 = "What do you think? "
var combineMessage = message1 + message2
print(combineMessage) //输出结果为“Swift is awsome! What do you think? \n”

如何比较两个字符串是否相等?==即可:

let string1 = "Swift"
let string2 = "Swift"
if string1 == string2{
   print("Both are same!") //因为2个字符串一样,所以会输出"Both are same!\n"
}

计算字符串字符个数

let message1 = "Hello"
message1.characters.count //返回值会是5

数组

Swift中定义数组的方式有点像OC。举个例子:
Objective C:
NSArray *recipes = @[@"Burger",@"Full Breakfast",@"Ham and Egg Sandwich"];

Swift:
var recipes = ["Burger","Full Breakfast","Ham and Egg Sandwich"]
有一点需要注意:**与OC不同,Swift数组中的值只能是同一个类型,比如上述代码的变量recipes里面的值只能是String类型. 因为Swift有类型推断,数组recipes会被自动推断为字符串数组。

Swift中提供了许多方法对数组进行操作,比如:
常用范例1:求数组中元素的个数

var recipes = ["Burger","Full Breakfast","Ham and Egg Sandwich","Milk"]
recipes.count
//返回值会是3

常用范例2:为数组中添加元素

var recipes = ["Burger","Full Breakfast","Ham and Egg Sandwich"]
//格式:recipes += ["你想添加的1个或多个元素"]
recipes += ["Cake"]
recipes += ["Beef","Vegetable Salad"]

常用范例3:访问或修改数组中的某个元素

//取出数组的第0位
var recipeItem = recipes[0]
//修改数组的第1位
recipes[1] = "Full Dinner"
//修改数组的1到3位
recipes[1...3] = ["Cheese Cake","Greek Salad","Braised Beef Cheeks"] 

那么现在数组recipes中的元素应该是这样的:

  • Burger
  • Cheese Cake
  • Greek Salad
  • Braised Beef Cheeks

字典

Swift提供几种最常用的集合类型:数组,字典,集合现在我们来谈一谈字典。字典中每个vaule都会与一个key成对出现。举个例子:

var companies = ["KEY":"VAULE","APPL":"Apple Inc","GOOL":"Google","FB":"Facebook"]

那么把字典的定义格式总结出来便是这样的:

let dictionary = [KEY:VAULE,KEY2:VAULE2.....]

常用范例1:遍历一个字典

for (key,vaule) in companies{
     print("key is \(key),vaule is \(vaule)")
}

常用范例2:遍历字典中的key或vaule

//遍历key
for key in companies.keys{
     print("stock code is \(key)")
}

//遍历vaule
for vaule in companies.vaules{
     print("name is \(vaule)")
}

常用范例3:为字典修改或添加一组key,vaule

//添加格式:dictionary[你要添加的key] = 你所要添加的vaule
companies["AMZN"] = "sdfsdd"

//修改格式:dictionary[字典中你要修改的key] = 你所要修改的vaule
companies["AMZN"] = "Amazon.com Inc"

集合

Swift中集合的定义很像数组,但与数组有2点不同:

  1. 数组是有序的,集合是无序的!!!
  2. 数组可以使用类型推断,集合不能,必须声明类型否走会被视为是一个数组!
    举个例子:
//定义集合
let set1:Set = [1,3,5,7,9]
//定义数组
let array = [1,3,5,7,9] 
//把上面2调代码放入playground里面,看看有什么不同

常用范例1:为集合添加元素

set1.insert = (11)

常用范例2:比较2个集合

let set2 = [2,3,5,15,8]
//求出2个集合的相同部分
set1.intersection(set2)

//求出2个集合不同的部分
set1.symmetricDifference(set2)

上述代码第1段的返回值会是:
{3,5}
第二段代码的返回值为:
{1,7,9,2,15,8}


在Swift中定义一个类,我们使用class关键字,举个例子:

class Recipe{
      var name:String = ""
      var price:Int = 10
      var ingredients = ["egg"]
}

在swift中,有一点必须要注意:每个属性你都必须给它一个初始值!那如果我不想给它初始值该怎么办?使用可选类型你可能会为此感到疑惑,其实很简单,就是在变量的类型后面加上一个+. 可选类型以后会提到,现在不理解没关系,那么上面的Recipe可变为:

class Recipe{
      var name:String?
      var price:Int = 10
      var ingredients:[String]?
}

上面的代码中,变量name和数组ingredients都被赋了1个默认值nil可以把它理解为“空的”吧。这是可选类型,我们将会在下一章讨论。把一个类实例化可以这么写:

var aRecipe = Recipe() //实例化一个类
aRecipe.name = "Ham" //使用“点语法”访问每个属性
aRecipe.price = 20
aRecipe.ingredients = ["egg","vegetable","potato"]

Swift允许你对类进行继承并采用协议。举个例子:我要定义一个myView的类,这个类要继承自UITableViewController这个类,并采用UITableViewDataSourceUITableViewDelegate两个协议的话,可以这么写:

class: UITableViewController,UITableViewDelegate,UITableViewDataDource

有两点需要注意:

  1. 在定义一个类并继承与别的类,并采用别的协议的时候,必须先把继承的类名写在协议前面!
  2. 在swift语言中,实现了单继承机制,但是允许不继承,没有任何继承的类为基类;有继承的类为子类,被继承的类为该子类的父类:我们称父类派生了子类,子类继承了父类。

方法

在Swift允许你在类,结构体,枚举中定义方法。我们使用func关键字定义方法。下面举个例子,在类中定义一个没有返回值的方法:

class learnMethods{
       func saySomething(){
              print("Swift is future")
       }
}

Swift中使用点语法来调用方法:

let say = learnMethods()
say.saySomething()

下面我们在类中写个带返回值的方法:

class learnMethods2{
      func sayMyName(name:String)  -> Int {
           print("Hello\(name)!")
           return name.characters.count
      }
}

返回值的语法可能有点怪,使用->来申明返回值的类型。我们来总结一下方法的定义规则:

func 函数名(参数名:参数类型) -> 返回值类型{

}

把下面这段代码在playground的中练一练:

let learn = learnMethods2()
let temp = learn.sayMyName(name:"Bryant")
print(temp)

看看控制台的输出结果和旁边显示栏的返回值。


控制流

Swift的控制流语法比较像C,我们来看一看。

for循环当你只是想迭代一个范围内的数据时,我们使用.....<来确定这组数句的范围。...开区间..<闭区间。如何区别.....<二者呢?举个例子:

for i in 1..<5{
     print("index = \(i)")
}

输出的结果会是:

index = 1
index = 2
index = 3
index = 4

当我们使用...时:

for i in 1...5{
     print("index = \(i)")
}

输出结果会是:

index = 1
index = 2
index = 3
index = 4
index = 5
现在明白2者的区别了吧!

is-else语句 功能与C,OC,Java相同不做过多介绍,语法也十分相似。
举个例子:

var bookPrice = 1000
if bookPrice >999{
   print("It's too expensive!")
}else{
    print("I can pay for it! ")
}

同样你也可以使用else-if语句。

switch语句switch语句与OC相比有了一个巨大的提升,Let's take a look!

let name1 = "Jerry"
switch name1 {
case "Bryant":
    print("Sounds cool!")
case "Jerry":
    print("Sounds interresting!")
case "Jack":
    print("It's boring!")
default:
    print("I don't know!")
} 

如果你学过别的编程语言,你看到有什么不同的地方吗???
首先,Swift支持对字符串进行处理;其次,发现没有每个case后面不用加break,如果你学过C或别的语言,你便知道switch语句中每个条件后面是要加break的,如果不加,系统会视为继续判断下一个条件。Swift不同,只要你符合了其中的1个条件,会立马退出,即使下面有同样符合的条件也不会进行判断了所以每个case后面不必要加break. 为了更好的理解,再举个栗子:

let Number = 99
switch Number {
case 0...100:
    print("The number is between 0 to 100")
case 1...99:
    print("The number is between 0 to 99")
default:
    break
}

把这段代码打到playground中试一试,常量Number2个条件都符合,输出的确实The number is between 0 to 100就是因为Number符合了第1个条件,所以立马跳出switch语句,不会对下面的条件再做判断。上面这段代码也说明Swift的switch语句十分强大,可以支持开区间闭区间


这些资料大部分都是我个人通过阅读官方文档,查阅资料所整理出来最精华的部分,如果你喜欢的话,可以关注我的专题

相关文章

  • #1极速学习Swift

    Swift这门语言我不想多介绍了,只要你有一定的编程基础,学习swift将会是一个轻松愉快的过程。 本次的内容: ...

  • #2极速学习Swift

    本次内容: 元组 可选类型简介 可选解包 可选链 元组 Swift中提供了一种OC中没有的高级类型元组。你可以把多...

  • Swift 学习日记 - 目录/相关链接

    欢迎来到 o1xhack (wyx) 的 Swift 学习日志。更多请看最后。 目录 Swift 学习日记 - 1...

  • swift学习1

    swift的优点: 1、优于OC,快速、现代、安全、互动 2、取消了预编译指令包括宏 3、可以使用现有的Cocoa...

  • Swift学习(1)

  • 极速学习……

    《》 《成都》—— 1:左手食指按六弦三品,右手弹633633 2:左手食指按五弦三品,右手弹533533 3:左...

  • OC与Swift混编,互相导入三方库

    Swift已是大势所趋,那就快开始Swift学习吧。 OC中使用Swift库 pod导入Swift库1.编辑Pod...

  • iOS 10.17日记

    swift 学习 1 static和class的区别 2 学习手势的使用 3 swift 中kvo的使用(和oc...

  • Swift学习笔记①

    Swift学习笔记①Swift学习笔记①

  • Swift 学习笔记

    初级Swift 记录初级swift学习笔记 1.在Swift中,当需要导入类库的时候,直接输入import + 类...

网友评论

      本文标题:#1极速学习Swift

      本文链接:https://www.haomeiwen.com/subject/erkkdxtx.html