1.常量和变量

定义一个常量:let 常量初始化赋值后 不能再次赋值

定义一个变量:var 赋值后 可以在此修改 后面一定要修改 否则选择let

2.Swift有数据类型推导 根据后面的值直接推出来的类型(option加鼠标左键4

3.显示指定类型 let cDouble 20.5

4.swift中没有隐式类型转换

类型不同 不能参与运算

5.let&var 选择

建议先使用let 在哪需要修改时 再改成var

6.optional可选类型定义的常量或者变量可能有值 可能没有值(空,nil

1)定义的常量或者变量不能 直接参与计算

格式:可选类型- 类型后面加上

egvar aInt

定义的可选类型的变量默认值是nil

2‘ Optional ’表明 定义的变量或者常量是一个可选类型

‘ unwrapped ’ 表明可选类型没有进行解包

3let result a !+ b

对可选类型的变量或者常量进行强制解包(告诉系统这个值一定存在 你去用吧 如果这个值不存在(unexpectedly found nil while unwrapping an Optional value 对一个可选值为nil 强制解包 崩溃)

swift里面操作符空格要匹配

4??运算符

let result a ?? 0)+ b

使用 空合并运算符 ‘ ?? ‘ 判断前面的可选类型的变量或者常量是否有值 如果有值 直接使用 a参与计算 如果anil 使用??后面的值参与计算

7.if控制流

1if num > 5

()可以省略

swift 里面 只有一行代码 也不能省略{}swift里面 没有0即真的概念 条件语句的值 只能有true false 需要一个bool类型的值

2 可选类型的判断

unexpectedly found nil while unwrapping an Optional value

-对一个可选类型的值为nil 强制解包 报错

3if let 判断

它的意思是 判断可选类型的变量或者常量(URL)是否有值 有值 就使用前面定义的常量或者变量去记录这个值 如果这个可选类型的变量或者常量为nil 就不执行 if let语句

if let u url

//再次就可以使用u 而且这个u是一定存在的

let request NSURLRequestURLu


4)多个可选类型的判断

let nameString ?=张三

let age Int 20

//也可以使用var进行判断

if let n name,(vara age

print()

5guard let判断 if let相反的语法

//在循环里面可以使用break continue,不在循环里面使用return

//guard let 判断可选类型的常量或者变量是否有值 如果有值 则赋值给定义的常量或者变量 否则没有值 执行else语句里面的

guard let u url else

6)可选类型条件的判断

if let …. where….

where子句没有智能提示,子句可以使用&&

8.switch判断

swift 可以判断任意类型 可以省略break 可以省略大括号 case后必须有可执行语句

OC 只能判断整型

9.for循环

for while do whilefor in

0..<3 意思是 区间-[03

0…3 意思是闭区间 -[03

10.字符串的定义

1)定义:swift string这个类型 是一个结构体它的量级轻 速度是比Nsstring要快 它可以跟Nsstring无缝转换 支持字符串的遍历

OC Nsstring 它是一个对象 不支持字符串的遍历

2)字符串的拼接

使用可以拼接字符串

3‘ \()可以拼接字符串

可以不用强制类型转换

4)字符串长度

//统计字符串字符的个数

characters.count

//统计字节数

一个汉字在UTF8编码格式下占用3个字节

5)字符串的格式化

6)字符串的截取

11.集合

1)数组

定义数组:let 不可变数组 var 对应的可变数组

let array 1234

let array1 张三李四

var array2:[string string]()

//添加元素

array2.append苹果

//数组的遍历

for

for value in array

for (index,value) in array.enumerate

//数组的合并

两数组直接相加

类型不匹配 不能直接合并

//数组删除 remove

//数组的容量 capacity

容量是成倍扩展的 2的倍数

2)字典

字典的定义 string NSObject]这种字典类型是最常用 字典是无序的 数组是有序的

let定义的字典是不可变的 var 是可变的

//合并字典

不同类型的字典不能合并

//字典的删除remove 或者 dict“age”]= nil

//添加 如果key不存在就是添加操作

//修改 如果key存在就是修改操作

12.函数

1//无参数 无返回值

func demo1()

//swift2.0里面函数的第一个参数默认省略

//有两个参数 无返回值

func demo2aIntbInt

//有两个参数 无返回值的函数 num1 num2是外部参数 (是给调用方解释参数是什么意思 参数是干嘛的)

func demo3num1 a Intnum2 bInt){}

//有参数有返回值的函数

func sumaIntbInt->Int { return a + b }

2)函数格式

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

3)没有返回值的三种类型

<1>func demo(num1 a:Int,num2 b:Int){}

<2>func demo(num1 a:Int,num2 b:Int)->Void{}

<3>func demo(num1 a:Int,num2 b:Int)->( ){}

4swift中可以使用函数的嵌套

13.闭包

1)和OC中的block是非常类似的 是一个预先定义好的代码块 可以作为函数的参数传递 也可以作为函数的返回值 在需要的时候调用 在使用self的时候需要注意循环引用

2)闭包定义格式

闭包名 (参数名 :参数类型,…->返回值类型 in 执行代码

3)没有返回值的闭包可以直接去掉‘ ->( ) ’

4)定义一个没有参数 没有返回值的闭包可以直接去掉()->() ()->Void

5)???尾随闭包

//如果闭包作为函数的最后一个参数的话 则小括号()在闭包前面(小括号()提前关闭

//如果闭包没有参数和返回值 可以省略()->Void in’

14.OC block循环引用

//加载网络数据的方法

//模拟耗时操作 获取网络数据

15.解决block循环引用

//使用__weak 解决block的循环引用

//对象销毁后 weakSelf指向的地址为nil

__weak typeofselfweakSelf self

//使用__unsafe_unretained解决block的循环引用

//对象销毁后 weakSelf指向地址不变 地址对应对象已经销毁了 崩溃了报野指针

__unsafe_unretained typeofselfweakSelf self

swift基本语法的更多相关文章

  1. html5使用canvas实现弹幕功能示例

    这篇文章主要介绍了html5使用canvas实现弹幕功能示例的相关资料,需要的朋友可以参考下

  2. 前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)

    这篇文章主要介绍了前端实现弹幕效果的方法总结(包含css3和canvas的实现方式)的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  3. H5 canvas实现贪吃蛇小游戏

    本篇文章主要介绍了H5 canvas实现贪吃蛇小游戏,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  4. ios – 声明NSDictionary并在Swift中添加键值对?

    我一直在尝试使用类类型键和值来声明一个NSDictionary,如下所示:这里,“Category”和“SubCategory”是全局类.我知道我不能将类类型用于关键字段.但是,无论如何,我应该做到这一点.有没有办法做到这一点?如何声明专门的NSDictionary或类似的东西来做到这一点?

  5. ios – parse.com用于键,预期字符串的无效类型,但是得到了数组

    我尝试将我的数据保存到parse.com.我已经预先在parse.com上创建了一个名为’SomeClass’的类.它有一个名为’mySpecialColumn’的列,其数据类型为String.这是我尝试使用以下代码保存数据的代码:如果我运行这个我得到:错误:密钥mySpecialColumn的无效类型,预期字符串,但得到数组这就是我在parse.com上的核心外观:有谁知道我为什么会收到这个错误?

  6. ios – Swift相当于`[NSDictionary initWithObjects:forKeys:]`

    Swift的原生字典是否与[NSDictionaryinitWithObjects:forKeys:]相当?假设我有两个带键和值的数组,并希望将它们放在字典中.在Objective-C中,我这样做:当然我可以通过两个数组迭代一个计数器,使用vardict:[String:Int]并逐步添加东西.但这似乎不是一个好的解决方案.使用zip和enumerate可能是同时迭代两者的更好方法.然而,这种方法

  7. ios – 上下文类型’NSFastEnumeration’不能与数组文字一起使用

    斯威夫特3,你会这样做吗?解决方法正如您所发现的,您不能使用as-casting将数组文字的类型指定为NSFastEnumeration.您需要找到一个符合NSFastEnumeration的正确类,在您的情况下它是NSArray.通常写这样的东西:

  8. ios – Swift中的UIView动画不起作用,错误的参数错误

    我正在尝试制作动画并使用下面的代码.我得到“无法使用类型’的参数列表调用’animateWithDuration'(FloatLiteralConvertible,延迟:FloatLiteralConvertible,选项:UIViewAnimationoptions,动画:()–>()–>$T4,完成:(Bool)–>(Bool)–>$T5)’“错误.这意味着我使用了错误的参数.我错了.请

  9. ios – 在Swift中获取Cocoa Touch Framework项目版本字符串

    有谁知道这是否是我的项目设置中的缺陷,Xcode中的一个错误,或者是否有一种方法可以将Swift中的框架版本作为String或数组获取,这样我可以提供比major.minor更精细的版本控制?

  10. ios – 搜索数组swift中的对象

    我正在尝试使用UISearchController创建搜索功能.但是,我似乎无法使其与我的团队对象一起工作.我首先创建了一个包含id,name和shortname的TeamObject.然后我从一个url中检索teamData,并将TeamObjects添加到一个填充到tableView中的数组中.这个tableView包含一个searchController,它假设过滤数据,但没有任何反应.阵列

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部