数组

swift中的集合有:数组、字典、set。三者的区别为

  • 1、在swift中的集合类=是值类型,而OC中的是引用类型
  • 2、在swift中使用引用计数的概念来管理内存,但是引用计数只适用于对象类型,值类型不需要管理
  • 3、swift中引用计数管理内存的方法与OC中的引用计数管理内存的方法还是不同的
  • 4、在swift中数组是可以存放任意类型的,OC中只能存放对象类型

数组

1. swift中,Array也没有可变和不可变之分,而是取决于用什么关键字来修饰,var就是可变,let就是不可变

2. 使用字面量来给一个数组赋值

当我们显式声明数组中元素的类型时,内部的元素类型必须一致(隐式的话只要是对象就可以)
var array:[String] = ["ayang","yang","shuaiqi"]

数组增加元素

1.调用append方法进行元素添加时,是添加到数组最后面

array.append("shuai")

2.调用+=方法进行元素添加,也是添加到数组最后面

array += ["haha","heihei"]

3.调用insert方法进行元素添加

array.insert("hehe",atIndex: 0)

数组删除元素

1.删除指定下标的元素

array.removeAtIndex(2)

2.删除所有元素

array.removeAll(keepCapacity: true)

改变数组中的元素

1.通过下标来更改元素

array[0] = "happy"
array[1] = "yes"

2.利用下面的方法,不仅可以修改,而且可以删除元素

array[0...3] = ["1","2","3"]

数组查询

利用for-in来进行数组遍历

for value in array {
    println("value = \(value)")
}

使用全局enumerate函数返回一个由每一个数据项索引值和数据值组成的元组

for (index,value) in enumerate(array) {
    println("\(index):\(value)")
}

数组的初始化(声明存储固定类型的数组)

使用构造方法创建的是由一个特定数据类型构成的数组

第一种方式
var initArray:[String] = [String](count: 3,repeatedValue: "hehe")
第二种方式
var initArray2:Array<String> = Array(count: 4,repeatedValue: "jian")

字典

使用字面量来给字典进行赋值(无序排列)

var dictionary = ["name":"doubleDragon","age":24,"gender":"male"]

使用下标增加键值对

dictionary["address"] = "anyWhere"
dictionary["number"] = 24

调用removeValueForKey方法进行删除

dictionary.removeValueForKey("name")

1.使用键,修改固定键对应的值,若键不存在,则是添加

dictionary["number"] = 20

2.使用updateValue方法进行修改

updateValue可以进行修改和添加,当填入的键存在时就会进行数据更新,把键对应的老的值返回出来。当键不存在时,就会进行添加,返回nil

let returnValue = dictionary.updateValue(10,forKey: "number")
let returnValue2 = dictionary.updateValue(30,forKey: "class")

查(遍历字典)

for (key,value) in dictionary {
    println("key = \(key),value = \(value)")
}

字典初始化的方法也有两种

使用字典初始化方式创建的是固定键值类型的字典

1.

var initDictionary:[String:String] = [String:String]()

2.

var initDictionary2:Dictionary<String,String> = Dictionary()

控制流

for循环

1.for-in循环

for value in 1...10 {
    println("value = \(value)")
}
当我们不需要使用区间的值时,可以使用_告知系统
for _ in 1...10 {
    println("good")
}

2.for循环

for var index = 0; index < 10; index++ {
    println("index = \(index)")
}

while循环

var whileNumber = 0
while whileNumber < 10 {
    println("whileNumber = \(whileNumber)")
    whileNumber++
}

do-while循环

do {
    println("执行一次")
} while(false)

if-else语句

var aValue = 20
if aValue <= 21 {
    println("aValue <= 21")
} else {
    println("aValue > 21")
}

switch-case语句

1.在swift中,是没有贯穿的,只会执行满足条件的语句,不用加break也不会贯穿

2.每一个case分支中都必须有一个语句,假如真不想写,可以加break,通过编译

3.swift中,case可以加多个条件

4.若想贯穿可以加fallthrough

var switchNumber = 10
switch switchNumber {
case 10,3,2,8:
    println("10")
    fallthrough
case 11:
    println("11")
case 12:
    break
case 13:
    println("13")
default :
    println("other")    
}

5.swift中,switch-case可以进行值的绑定

var (x,y) = (10,0)
switch (x,y) {
case (let xValue,0):
    println(xValue)
case (10,let yValue):
    println(yValue)
default:
    println("others")
}

6.swift中,switch-case可以进行区间匹配

var domainNumber = 50
switch domainNumber {
case 0...10:
    println("哈哈")
case 11...100:
    println("嘿嘿")
case 101...10000:
    println("哼哼")
default:
    println("others")
}

控制流中,我们会遇到的关键字:break,continue,fall through

break在循环当中,跟c语言的语法规则一样,用来结束整个循环

continue在循环中,跟c语言的语法规则一样,用来结束本次循环

标签语句

当我们遇到多个循环嵌套的时候,我们根据需求,想要关掉某个循环,此时我们就要使用标签语句,用来区别不同的循环。标签语句的定义语法:name:写到想要标识的循环前面.

ayang: while true {
    for var labelNumber = 0; labelNumber < 100; labelNumber++ {
        if labelNumber == 5 {
            break ayang
        } 
        println("labelNumber = \(labelNumber)")
    }
}

swift入门第三章集合、控制流,标签语句的更多相关文章

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

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

  2. HTML5 WebSocket实现点对点聊天的示例代码

    这篇文章主要介绍了HTML5 WebSocket实现点对点聊天的示例代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

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

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

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

  5. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

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

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

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

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

  8. ios – 在Swift中将输入字段字符串转换为Int

    所以我非常擅长制作APP广告Swift,我试图在文本字段中做一些非常简单的输入,取值,然后将它们用作Int进行某些计算.但是’vardistance’有些东西不正确它是导致错误的最后一行代码.它说致命错误:无法解开Optional.None解决方法在你的例子中,距离是一个Int?否则称为可选的Int..toInt()返回Int?因为从String到Int的转换可能失败.请参阅以下示例:

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

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

  10. 如何在iOS中检测文本(字符串)语言?

    例如,给定以下字符串:我想检测每个声明的字符串中使用的语言.让我们假设已实现函数的签名是:如果没有检测到语言,则返回可选字符串.因此,适当的结果将是:有一个简单的方法来实现它吗?

随机推荐

  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,所以编译器会报错,现在来一一解决。

返回
顶部