本文由 张渊杰 (网名寂静)编写

Swift语言 1小时速学教程

写在前面的话

有些人可能想, 呵呵, 1小时学一门语言, 你不是搞笑吧, 我想说, 是的, 完全可以, 就要看你怎么学了

要想在1小时内学会swift, 你要有一个前提和一个目标, 前提就是你已经熟练掌握了任何一门面向对象的语言, 并且用它来开发过项目, 而树立的目标不是完全掌握这门语言, 而是学会基本的使用, 并且使用它写一个小项目, 这才是这个教程的终极目的.

学习其实是体验, 学习其实是思考, 学习其实是验证, 学习终归需要实践, 总归要解决现实中的问题, 好了, 让我们开始吧

注意: 本教程适用于 已经掌握了C++,Objective-C, PHP等面向对象编程语言并使用这些语言编写过项目的人

概览

  • 基本输出
  • 变量和常量
  • 运算符和表达式
  • 选择语句
  • 循环语句
  • 数组
  • 字典
  • 函数
  • 字符串
  • 结构体
  • 枚举
  • 类的定义
  • 类的初始化
  • 类方法
  • 类的继承
  • 类的扩展
  • 类的协议 - 实现一个代理

1. hello world

实例1: 输出hello world

让我们来写一个最简单的swift程序吧!

//使用print函数输出hello world
print("hello world")

说明:

使用//和/**/注释语句, 语句后面的";"加上可以, 不加也可以

2. 变量定义

实例1: 计算圆的面积

使用var可以定义变量, 使用print可以输出

//使用var定义变量, 变量类型会使用自动推导, 如果没有初始化, 必须指定类型
var a = 10
var b = 20
var c = a+b //字符串中的\(c)表示输出的时候替换为c的值
print("a = \(c)")

实例2: 变量类型和转化

//4种常用类型
var n1:Int
n1=10;
var n2:Double = 10.23;
var n3:Character = "A";
var n4:String = "AB" //类型转换
var v5 = 10.2
var v6 = 3
//直接写, 有语法错误
//var v7 = v5 + v6 //swift是类型安全的语言, 整数和小数不能直接计算, 需要转化为同一种类型
var v7 = v5 + Double(v6)
print("v7 = \(v7)")

3. 运算符和表达式

实例1: 计算圆的面积

let pi = 3.14159
var r = 10
var area = Double(r) * Double(r) * pi
print("area = \(area)")

说明: swift是类型安全的语言, 整数和小数不能直接计算, 需要转化为同一种类型

4. 选择语句

实例1: 判断成绩是否及格

//定义成绩
var score = 67 //swift中选择与OC十分相似
if(score>=60)
{
print("及格")
}
else
{
print("失败")
}

5. 循环语句

实例1: 计算1-100的和

var sum = 0

//swift的循环使用for实现, 与oc相似, 但是循环变量使用var定义
for(var i=1; i<=100; i++)
{
sum += i
}
print("sum = \(sum)")

6. 数组

实例1: 存储5个人的年龄, 计算平均值


// 使用 [] 定义数组
var ages = [23,24,12,43,32] //使用ages[0]形式获取数据
print("第一个人年龄 \(ages[0])") //使用count属性获取数组个数
print("数组元素个数 \(ages.count)") var sum = 0.0
for(var i=0; i<ages.count; i++)
{
sum += Double(ages[i])
}
var average = sum / Double(ages.count)
print("avg = \(average)")

7. 字典

实例1: 存储5个人的年龄, 计算平均值


//使用[]定义字典
var dict = ["sid":"0805",
"name":"zhangsan",
"score":89]
var name = dict["name"] //获取出的可能是nil, 建议做判断
if(name != nil)
{
//name!语法表示name可能为nil, 可能是数据, 取到真实的数据
print("name = \(name!)")
} //遍历的语法
for (key,value) in dict
{
print("\(key) -> \(value)")
}

8. 函数

实例1: 定义一个基本函数(没有参数和返回值)

//定义一个基本函数
func basic()
{
print("hello")
} //执行这个函数
basic()

实例2: 带参数和返回值方法

//swift是类型安全语言, 参数需要指明类型
func sum(let x:Int,let y:Int) -> Int
{
return x+y;
} //执行函数
var n = sum(10, y: 10)
print("n = \(n)")

9. 字符串

实例1: 定义字符串, 输出

//定义字符串并输出使用
var s = "hello" //输出字符串
print("s = \(s)") //统计字符个数
print("s = \(s.characters.count)")

实例2: 字符串合并

//合并
var s1 = "hello "
var s2 = "world" //可以直接使用 + 合并两个字符串
var s3 = s1 + s2
print("s3 = \(s3)")

实例3: 获取子串

var s4 = "day day up"
var subString = s4.substringFromIndex(s.startIndex.advancedBy(4))
print("s4 = \(subString)")

10. 结构体

实例1: 定义一个结构体, 定义变量, 使用属性

//定义一个结构体, 注意, 其中数据如果不指定类型, 需要初始化
struct Person
{
var name = ""
var age = 0
} //创建结构体对应变量
var zhsan = Person() //使用结构体的属性
zhsan.name = "zhangsna"
zhsan.age = 10

11. 枚举

实例1: 定义一个枚举, 使用这个枚举

//定义一个枚举, 其中的值使用case定义
enum Week
{
case 周一
case 周二
case 周三
case 周四
case 周五
case 周六
case 周日
} //获取和使用枚举的值
print("1-> \(Week.周一)")

12. 类的定义和使用

实例1: 定义一个类, 创建对象, 使用属性和方法

//使用class定义类
class Dog {
var nickname = ""
var age = 0 //使用func定义方法
func show()
{
//方法中使用self引用对象本身
//print("name = \(self.nickname), age = \(self.age)") print("name = \(nickname), age = \(age)")
}
} // 使用" 类() "格式创建对象
var dog = Dog() //使用对象的属性
dog.nickname = "ahua"
dog.age = 4 //使用对象的方法
dog.show()

13.类的初始化

实例1: 添加两个初始化方法, 并利用这两个方法初始化类

class Car
{
var type = ""
var speed = 0.0 //定义默认的初始化类
init()
{ } //定义带参数的初始化类
init(let type:String,let speed:Double)
{
self.type = type
self.speed = speed
}
} //创建的同时初始化
var car = Car(type:"mini",speed: 100)
print("name = \(car.type)")

14. 类的类方法

实例1: 定义和使用类方法

class Math
{
static func add(let x:Int, let y:Int) -> Int
{
return x+y;
}
} var num = Math.add(10, y: 20)
print("n = \(num)")

15. 类的继承

实例1: 定义类, 继承一个类


//定义的父类
class Car
{
var type = ""
var speed = 0.0 //定义默认的初始化类
init()
{ } //定义带参数的初始化类
init(let type:String,let speed:Double)
{
self.type = type
self.speed = speed
}
} //定义子类FlyCar, 继承父类
class FlyCar : Car
{
var flySpeed = 0.0
func fly()
{
print("fly with \(flySpeed)")
}
} //创建对象使用
var fc = FlyCar()
fc.fly()

16. 类的扩展

实例1: 定义扩展, 并且使用这个扩展


extension Car
{
//扩展不能包括属性
//var loadLimit = 0
func load()
{
print("Load people")
}
} var newCar = Car()
newCar.load()

17. 协议

实例1: 定义和使用协议


//使用protocol定义一个协议
protocol TextFieldDelegate
{
func didFinish()
} //TextField利用协议规定delegate对应的类实现方法
class TextField
{
var text = ""
//?表示delegate未设置的时候为nil
var delegate:TextFieldDelegate? func handClick()
{
//检测是否设置代理, 如果设置, 执行代理中协议规定的方法
if(delegate != nil)
{
delegate?.didFinish()
}
}
} //ViewController遵守和使用协议
class ViewController : TextFieldDelegate
{
func viewDidLoad()
{
//警告
// ariable was never mutated consider changing to let constant
let textField = TextField()
textField.delegate = self
textField.handClick()
} //实现的协议方法
func didFinish() {
print("编辑完成")
}
}

有疑问有建议,如何联系我?

如果对本教程有疑问或有其他意见, 请联系 张渊杰(注于移动开发和移动培训领域, QQ598694550,邮箱quietjolt@163.com)

Swift语言 1小时速学教程的更多相关文章

  1. Swift语言Storyboard教程:第一部分

    更新记录: 该Storyboard教程由Caroline Begbie更新iOS 8和Swift相关内容.原文作者为教程编纂组的成员Matthijs Hollemans. 2014/12/10更新:  ...

  2. Swift语言Auto Layout入门教程:上篇

    原文:Beginning Auto Layout Tutorial in Swift: Part 1/2,译者:@TurtleFromMars 开始用自动布局约束的方式思考吧! 更新记录:该教程由Br ...

  3. 学习swift语言的快速入门教程推荐

    随着苹果产品越来越火爆,苹果新推出的swift必定将在很大程度上代替oc语言.学好swift语言,对于IOS工程师来讲,已经是一门必备技能. 有一些比较好的英文版教程,值得学习. 1. Swift T ...

  4. swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程

    swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程 1.2.3  注册非免费苹果账号swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程 免费的苹果账号在 ...

  5. Swift语言中如何使用JSON数据教程

    这是一篇翻译文章,原文出处:http://www.raywenderlich.com/82706/working-with-json-in-swift-tutorial Swift语言中如何使用JSO ...

  6. 苹果Swift语言中文教程资源汇总

    苹果swift语言中文教程(零)搭配环境以及代码执行成功http://vjiazhi.com/kaifa/1014.html 苹果Swift语言中文教程(一)基础数据类型 http://vjiazhi ...

  7. Swift语言教程中文文档

    Swift语言教程中文文档 Swift语言教程(一)基础数据类型 Swift语言教程(二)基础数据类型 Swift语言教程(三)集合类型 Swift语言教程(四) 集合类型 Swift语言教程(五)控 ...

  8. 快看Sample代码,速学Swift语言(1)-语法速览

    Swift是苹果推出的一个比较新的语言,它除了借鉴语言如C#.Java等内容外,好像还采用了很多JavaScript脚本里面的一些脚本语法,用起来感觉非常棒,作为一个使用C#多年的技术控,对这种比较超 ...

  9. 快看Sample代码,速学Swift语言(2)-基础介绍 快看Sample代码,速学Swift语言(1)-语法速览

    快看Sample代码,速学Swift语言(2)-基础介绍 Swift语言是一个新的编程语言,用于iOS, macOS, watchOS, 和 tvOS的开发,不过Swift很多部分内容,我们可以从C或 ...

随机推荐

  1. testlink邮件设置(centos 7)

    上一篇文章在centos 7上安装了testlink(CentOS 7下安装xampp和testlink),本篇进行邮件设置,可在进行testlink密码修改.用例指派时进行邮件通知 1.修改conf ...

  2. 【转】在rman增量备份中,有差异增量和累积增量的概念

    本文转自hougoo的博客 1.概念 差异增量:是备份上级及同级备份以来所有变化的数据块,差异增量是默认增量备份方式 累积增量:是备份上级备份以来所有变化的块 因为累积增量是备份上级备份以来所有变化的 ...

  3. 谷歌Flash不是最新版

     http://www.adobe.com/support/flashplayer/debug_downloads.html

  4. Android之发送短信和接收验证码

      最近项目需求需要发送短信和接收验证码并将验证码显示在输入框中 以下是我的记录    前提---权限     <uses-permission android:name="andro ...

  5. 【剑指Offer学习】【面试题19 :二叉树的镜像】

    题目:请完毕一个函数,输入一个二叉树,该函数输出它的镜像. 二叉树结点的定义: /** * 二叉树的树结点 */ public static class BinaryTreeNode { int va ...

  6. cocos2dx shader

    http://www.oschina.net/question/565065_79818 Cocos2d-x 2.0 -- 从 点,线,面学起 http://blog.csdn.net/dawn_mo ...

  7. Android(java)学习笔记163:Android开发时候颜色设置是bgr不是rgb

    eb" android:background ="#" 

  8. Android(java)学习笔记159:Dalivk虚拟机的初始化过程

    1.初始化下面系统函数(调用dvmStartup函数初始化所有相关的函数) 开始学习虚拟机的初始化过程,先从dvmStartup函数开始,这个函数实现所有开始虚拟机的准备工作: dvmAllocTra ...

  9. YII设置用户访问过滤

    设置用户访问过滤 1.哪个控制器设置访问过滤,就在哪个控制器中添加如下代码 class XxxController extends Controller { //当前控制器是否使用过滤功能 publi ...

  10. js 取到相同的字符串 返回对应的下标

    ["aaa","aaa","","ddd","eee","eee"," ...