1.  let 关键字是用来定义常量的,任何类型的常量都可以进行定义;例如:定义字符串 let constantValue1 = "this is a string",也可以定义数值:let constantValue2 = 30

但需要注意:.声明时如果不初始化需要加上常量的类型:let constantValue:String

2. var 关键字是用来定义变量的,任何类型的变量也可以定义,如:var variableValue1 = "this is string too" , 数值:var variableValue2 = 30.

注意:和let一样,如果定义时没有初始化需要加上变量的数据类型:var variableValue3 :String

3. 把数值转换成字符插入字符串中:如 let number = 10

let string = "the value is"

let newstring = string + (string)number

更加便捷的方法是使用\(value)插入字符串中,例如修改上面的:let string = "the value is \(number)"

4. 可选值的定义,在数据类型后面加上?,例如  let string:String? = "this is a string"

可选值的作用是它里面不仅仅含有该类型的值,还有一个nil,这是为了避免程序员在编程的时候也不知道自己使用的变量已经为空,而导致系统崩溃。

而为了得到可选值里面的值你需要使用!进行打开 let otherstring = string!

5. 定义数组,和平常的定义没什么区别:var ratingList = ["Poor", "Fine", "Good", "Excellent"]

如果你想定义一个空的数组:let emptyArray = [String]()

 6.if中嵌套where的使用:

var optionalHello: String? = "Hello"
if let hello = optionalHello where hello.hasPrefix("H"), let name = optionalName {
greeting = "\(hello), \(name)"
}

解释:if语句执行的是把optionalhello的值赋予常亮hello,如果没有值将为false退出if,而在这个语句里,where执行的是判断可选变量optionalhello的首字母是否为大写'H',如果为false将退出if。
注意:如果要使用where必须满足以下几点:
1、被赋的值无论你使用的在之前有没有声明过,跟在if后使用的话必须要重新声明(可以不声明类型只声明变量还是常量)。
2、(a)必须是可选类型,并且在赋值的时,必须是声明过可选类型,如果直接使用a = 1或a = "a",将报错.
4、if里只能用于赋值,不能用于比较大小。
hasPrefix("H")是用来判断字符串是否以H来开头
 

7. switch的使用:

  1. let vegetable = "red pepper"
  2. switch vegetable {
  3. case "celery":
  4. let vegetableComment = "Add some raisins and make ants on a log."
  5. case "cucumber", "watercress":
  6. let vegetableComment = "That would make a good tea sandwich."
  7. case let x where x.hasSuffix("pepper"):
  8. let vegetableComment = "Is it a spicy \(x)?"
  9. default:
  10. let vegetableComment = "Everything tastes good in soup."
  11. }

case 后面比较的值可以是字符串、数值、运算,或者几个值在一个case中;

hasSuffix(pepper)是用来判断字符串是否以pepper结尾

程序后面需要加上default,不然会发生报错

 8. for循环的使用:情况(1)half-open range operator (..<)
  1. var firstForLoop = 0
  2. for i in 0..<4 {
  3. firstForLoop += i
  4. }
  5. print(firstForLoop)

for可以在规定的区间进行循环使用for i 0..4

情况(2)closed range operator ( ...)

var number = 0

for _ in 0...4

{

number += 1

}

print(number)

_是通配符号,在你不需要知道循环里面具体的执行时,可以使用这个,在这里只是把number  + 1,所以不需要设置变量来执行内部代码

9. 函数的定义使用func 函数名(参数,.......)->返回类型{}

例子:

var name = "steven"

var day = "thursday"

func greet(name:String , day:String) -> String {

return "Hello \(name) , today is \(day)"

}

var result = greet(name, day: day)

print(result)

当不需要返回数据时,后面的-> String可以不需要

10. 函数的声明,使用class进行声明,格式为:class 函数名{},

在函数里面可以声明属性和方法;属性用var、let等来进行声明,方法使用func进行声明

class Shape {

var number = 0

func simpleShape() -> String

{

return "a shape with \(number) sides"

}

}

var shape = Shape()

shape.number = 1

var shapedescription = shape.simpleShape()

print(shapedescription)

但是 ,还有一个地方需要注意的是,在你定义函数的时候需要一个初始化函数,init(),这是为了创建实例的时候方便赋值。如:

class nameShape {

var numberofside = 0

var name:String

init(name:String)

{

self.name = name

}

func simpledescription() -> String {

return "a shape with \(numberofside) side"

}

}

var assas = nameShape(name: "steven")

assas.numberofside

assas.simpledescription()

assas.name

在创建实例的时候需要把初始化函数的参数传递进去,初始化函数里面有多少个属性就需要传递多少个属性进去。

如果在定义的时候就已经初始化,就不需要再传递参数进去,但是没有初始化的必须放进初始化函数里面,并且创建实例的时候需要传进参数。

11. 子类,格式:类名:父类名{}

class square: nameShape

{

var sidelength:Double

init(name:String , sidelength:Double)

{

self.sidelength = sidelength

super.init(name: name)

numberofside = 4

}

func area() -> Double

{

return sidelength * sidelength

}

override func simpledescription() -> String {

return "a square with sides of legth \(sidelength)"

}

}

let testSquare = square(name:"my text square" , sidelength: 5.2)

testSquare.area()

testSquare.simpledescription()

当想覆盖父类的方法时,需要使用override,不然会出现报错;

想初始化父类的值时,如果父类使用init来初始化,那需要调用super.init()来进行重新赋值

创建实例的时候也可以判断传递进来的值是否符合要求,要是不符合要求就会传递一个nil,初始化函数需要用init?(){}

class Circle: nameShape

{

var radius:Double

init?(radius:Double , name:String)

{

self.radius = radius

super.init(name: name)

numberofside = 20

if radius < 0

{

return nil

}

}

override func simpledescription() -> String {

return "a circle with a radius of \(radius)"

}

}

var circle = Circle(radius: 3.0 , name: "no name")

var failCircle = Circle(radius: -7.0 , name: "stenf")

circle?.simpledescription()

failCircle?.simpledescription()

circle?.name

failCircle?.name

12.枚举的定义:在枚举中不仅仅可以定义数值,还好可以定义方法:

enum Rank: Int {

case Ace = 1

case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten

case Jack, Queen, King

func simpDescription() -> String {

switch self {

case .Ace:

return "ace"

case .Jack:

return "jack"

case .Queen:

return "queen"

case .King:

return "king"

default:

return String(self.rawValue)

}

}

if let convertedRank = Rank(rawValue: 1)

let threedescription = convertedRank.simpDescription()

}

利用rawValue可以间接的调用枚举里面的方法

也可以像调用方法那样调用枚举里面的数值:let Jack = Rank.Jack     let Jackdescription = Jack.simpleDescription()

13.结构体的定义使用struct :

struct Card

{

var rank: Rank

var suit:Suit

func simpleDescrption() -> String

{

return "the \(rank.simpleDescription()) of \(suit.simpleDescription()))"

}

}

var  card = Card(rank: .Three , suit: .Clubs)

card.simpleDescrption()

结构体里面不仅可以定义不同的数据类型,还可以使用不同的类进行定义实例,但是定义结构体的实例时就需要传输相应的类的值进去。

14. 协议的定义:使用protocol

protocol ExampleProtocol {

var simpleDescription: String { get }

func adjust()

}

simpledescription后面跟着的string{get}是设定这个变量只能阅读,无法改写

15. 
16. 

官方文档学习之《start developing iOS apps(swift)》的更多相关文章

  1. Spring Data Commons 官方文档学习

    Spring Data Commons 官方文档学习   -by LarryZeal Version 1.12.6.Release, 2017-07-27 为知笔记版本在这里,带格式. Table o ...

  2. Spring 4 官方文档学习(十二)View技术

    关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Template ...

  3. Spring 4 官方文档学习(十一)Web MVC 框架之配置Spring MVC

    内容列表: 启用MVC Java config 或 MVC XML namespace 修改已提供的配置 类型转换和格式化 校验 拦截器 内容协商 View Controllers View Reso ...

  4. Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图

    接前面的Spring 4 官方文档学习(十一)Web MVC 框架,那篇太长,故另起一篇. 针对web应用的所有的MVC框架,都会提供一种呈现views的方式.Spring提供了view resolv ...

  5. Spring 4 官方文档学习(十一)Web MVC 框架

    介绍Spring Web MVC 框架 Spring Web MVC的特性 其他MVC实现的可插拔性 DispatcherServlet 在WebApplicationContext中的特殊的bean ...

  6. Spring Boot 官方文档学习(一)入门及使用

    个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ...

  7. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(一)

    题外话:本篇是对之前那篇的重排版.并拆分成两篇,免得没了看的兴趣. 前言 在Spring Framework官方文档中,这三者是放到一起讲的,但没有解释为什么放到一起.大概是默认了读者都是有相关经验的 ...

  8. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(二)

    接前一篇 Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 本篇主要内容:Spring Type Conver ...

  9. Spring boot官方文档学习(一)

    个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ...

  10. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion

    本篇太乱,请移步: Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 写了删删了写,反复几次,对自己的描述很不 ...

随机推荐

  1. 空心文字闪动--css3

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. 加载图片、倒计时--Columbia项目总结

    CSS3 居然会在隐藏显示的时候触发,真心太神奇了(在ff下是没有用的,在chrome下才阔以) 貌似我还是写了大循环,怎么样才能优化这个循环呢 加载图片:已经用到过好多次了↓ function lo ...

  3. python中Url链接编码处理(urlencode,urldecode)

    做完了flask-web应用,这几天想用爬虫做个好玩的电影链接整合器,平时找电影都是在dytt或者dy2018之类的网站,在用dytt搜索电影<美国队长时>,发现他的搜索链接是这样的:ht ...

  4. python3 安装scrapy Exception: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/pip/req/req_install.py", line 1006, in check_if_exists解决方法

    错误代码: Exception: Traceback (most recent call last): File , in check_if_exists self.satisfied_by = pk ...

  5. 采用SHELL,通过SQL LOAD导入一定格式的txt文件至数据库中

    1. 准备工作,window中可直接通过sqlload直接导入文件,linux下,需要有sqlload的相关软件. 2. SQL脚本(MID_DFDZ.ctl) LOAD DATA INTO TABL ...

  6. 经验分享:使用 Restyle.js 简化 CSS 预处理

    Andrea Giammarchi的restyle.js是一个新的,基于JavaScript的CSS预处理器,能够运行在服务端(通过Node.js)或者浏览器中.它宣称自己是“一种简化的CSS方法”, ...

  7. Solr 4.3.0 配置Data import handler时出错

    启动solr的时候,居然出现了如下的错误: org.apache.solr.common.SolrException: RequestHandler init failure        at or ...

  8. PMP 项目管理

    1.什么是项目管理   项目管理就是把各种知识,技能,工具,技术应用于项目活动,来满足项目的需求.这个是从技术方面来说的.其实在项目管理的技术 层面背后,还有理念层面的内容.学习项目管理,除了学习技术 ...

  9. 网卡eth0配置信息

    DEVICE=eth0:0 //虚拟网络接口,随意 ONBOOT=yes //系统启动时激活 BOOTPROTO=static //使用静态ip地址 IPADDR=192.168.6.100 //该虚 ...

  10. wordpress 中禁止更新提示

    前言: 在此之前每每打开blog的时候总是有那么个数字在那边显示,如果是很重要的更新显示在那也就算了,有时候就算一个破主题他还一直在那边,很是让小猪纠结.最关键的是要是更新了主题,那么之前所有自定义的 ...