下面这些代码可以在playground中展现出来




import UIKit


/* 实例化一个 UIView 的对象,保存在堆中

[[UIView alloc] initWithXXX:xxx] 所有 OC中以这种格式的实例化方法,在 swift 中都可以使用 (XXX:)*/

let view = UIView(frame: CGRectMake(0,0,100, 100))


view.backgroundColor = UIColor.orangeColor()

// 在这里修改的是 view 的属性,并没有修改 view 本身的地址


let btn = UIButton(frame: CGRectMake(20,20,60, 60))

btn.setTitle("hello",forState: UIControlState.normal)

view.addSubview(btn)



/*

实际的应用技巧

*/


// ? 表示 可以有值(Nsstring),也可以没有值(nil)

// ? 如果对象为空,就不会调用后面的方法,感觉上和 oc 中给 nil 发送消息类似

var str: Nsstring?

str = "hello"


// 打印可选项的时候,同时会输出一个 Optional,提示开发者,这是一个可选项

println(str?.length)

//println(str!.length)


let l = 10

// 目前的代码存在什么风险?如果 str 没有设置初始值,会直接崩溃

// 苹果把判断对象是否有内容的工作交给了程序员

//let len = l + str!.length


// 隆重推荐:?? 用来快速判断对象是否为 nil

let len2 = l + (str?.length ?? 0)


// 以下代码和上面的代码等效

if str != nil {

let len3 = l + str!.length

}

// ?? 的应用场景最多的就在tableView 的数据源方法



/*

for 循环

*/


// 传统的写法,几乎一样

// 注意:需要使用 var 而不是 let

for var i = 0; i < 10; i++ {

println(i)

}


// 更加方便的写法

// in 指定范围 0~9

// 早期的 swift 语法 .. 后来改成了 ..<

for i in 0..<10 {

println(i)

}


// 0~10

for i in 0...10 {

println(i)

}


// 如果遍历的时候,对索引下标不关注

// 其实 `_` swift 中,使用的非常广泛,主要用于忽略

for _ in 0...5 {

println("hello")

}



字符串

/**

swift中,字符串默认的类型是 String,而不是 Nsstring


* swift String 是一个结构体,的效率更高

* 支持快速遍历

* Nsstring,继承自 NSObject,是一个 OC 对象

* 不支持快速遍历

*/

var str1 = "Hello,大家一起飞"

// 对字符串的快速遍历

for c in str1 {

println(c)

}


// 字符串的拼接

let str2 = str1 + " hello"

let i = 100

println(str1 + " \(i) abc \(view.backgroundColor)")


let frame = CGRectMake(100,200, 300)

println("区域 \(frame)")


// 但是:如果需要格式怎么办? Nsstring.stringWithFormat

let str3 = String(format: "%02d:%02d:%02d",arguments: [1,5,10])


swift 中,如果要结合 range 一起使用 字符串,建议先转成 Nsstring 再处理

*/

let myString: Nsstring = "hello"

myString.substringWithRange(NSMakeRange(1,4))

// 蛋疼的使用 String & Range -> 取子串

//let subStr = myString.substringWithRange(Range<String.Index>(start: advance(str.startIndex,1),end: advance(str.startIndex,3)))


数组

// 使用 []

// 定义的数组类型是 [String]

// 表示数组中,只能存放 字符串

// oc 中的数组,分可变和不可变

// swift let 是不可变的, var 是可变的

let array1 = ["zhangsan","lisi"]


// 遍历数组

for a in array1 {

let str = "hello " + a

println(str)

}


// 不能向不可变数组中追加元素

//array1.append("abc")


var array2 = ["aaa","bbb"]

// 添加元素

array2.append("ccc")


// 如果定义数组时,指定的对象类型不一致

// 定义的数组类型是 [NSObject]

// 细节:11是一个整数,在 OC 中,如果要向数组中添加数字,需要转换成 NSNumber

// swift 中,可以直接添加 - 万物皆对象!

// 细节:通常在开始时,不建议在数组中使用不同类型的数据

var array3 = ["zzz",11,"123"]

for a in array3 {

let str = "hi \(a)"

println(str)

}


字典

// 定义一个字典,仍然使用 []

// 以下代码定义的字典类型是:[String : NSObject]

// 在目前的 swift 版本中,定义字典通常使用 [String : NSObject]

// 大多数情况下,key的类型是固定的

let dict = ["name": "zhangsan","title": "boss","age": 18]


// 遍历字典(注意:k,v 可以随便写,但是,前面是 key, 后面是 value)

// 这里使用了swift中的元祖技巧

for (kk,vv) in dict {

println("\(kk) -- \(vv)")

}


// 定义并且实例化字典

var dict1 = [String: NSObject]()


// 设置内容

dict1["name"] = "laowang"

dict1["age"] = 80


dict1


// 注意:如果 key 已经存在,设置数值时,会覆盖之前的值

dict1["name"] = "abc"

// 删除内容

dict1.removeValueForKey("age")

// 合并字典

var dict2 = ["title": "boss"]

dict2["name"] = "wangxiaoer"


// 字典的特性:key是不允许重复的

// 利用循环来进行合并

// 1> 遍历 dict2

for (k,v) in dict2 {

// updateValue 更新指定 key value

// 如果不存在 key,会新建,并且设置数值

// 如果存在 key,会直接覆盖

dict1.updateValue(v,forKey: k)

}


dict1

dict2




`函数`

// OC 风格 - (void)函数名(参数) {}

/**

函数定义格式

func 函数名(参数列表) -> 返回值 {// 代码实现}


* -> swift 特有的,表示 前面的执行结果,输出给后面的

*/

func sum(a: Int,b: Int) -> Int {

return a + b

}


sum(10,20)


// 强制填写参数,使用 #,可以在调用的时候,增加参数

// 会让代码提示更直观,符合 OC 程序员的习惯

func sum1(#a: Int,#b: Int) -> Int {

return a + b

}


sum1(a: 20,b: 80)



// 如果没有返回值 `-> 返回值` 可以省略

-> Void

-> ()

完全省略

以上三个是等价的

*/

func demo(a: Int) -> () {

println(a)

}


demo(10)

swift的一些知识点演练的更多相关文章

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

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

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

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

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

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

  4. Html5跳转到APP指定页面的实现

    这篇文章主要介绍了Html5跳转到APP指定页面的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

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

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

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

  7. ios – 比较两个版本号

    如何比较两个版本号字符串?例如:3.1.1和3.1.2.5.4现在我需要找出3.1.2.5.4是否高于3.1.1但我不知道如何做到这一点.有谁能够帮我?

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

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

  9. iOS:无法获取Caches目录的内容

    试图获取Caches目录的内容:路径是正确的,我可以在Finder中看到它存在并包含我的文件.directoryItems是nil,错误是我怎么了?解决方法你使用错误的路径.要为应用程序获取正确的缓存目录,请使用此:在cacheDirectory中,您将收到这样的字符串路径:整个代码:

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

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

随机推荐

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

返回
顶部