ios -- 教你如何轻松学习Swift语法(二)
var name : Optional<String> = nil
var name : String? = nil
name = Optional("why")
name = "why" // 系统会对字符串进行包装Optional, 再进行赋值
print(name!)
if let name = name {
print(name)
print(name)
}

let urlString = "www.baidu.com" let url : NSURL? = NSURL(string: urlString)
if let url = url {
let request = NSURLRequest(URL: url)
}
let path = NSBundle.mainBundle().pathForResource("123.plist", ofType: nil)
if let path = path {
NSArray(contentsOfFile:path)
}
//1.is的使用
let infoArray = ["why" , , 1.98]
let item = infoArray[] //item.isKindOfClass(UIButton.self) //string是结构体,不能用isKindOfClass
if item is String {
print("是字符串")
}else {
print("不是字符串")
}
let urlString = "www.baidu.com"
(urlString as NSString).substringToIndex()
let item1 = infoArray[]
let name = item1 as? String
if let name = name {
print(name.characters.count)
}
简写:
if let name = infoArray[] as? String {
print(name.characters.count)
}
let count = (infoArray[] as! String).characters.count
}


// 函数的嵌套
let value =
func test() {
func demo() {
print("demo \(value)")
}
print("test")
demo()
}
demo() // 错误 必须在对应的作用域内调用
test() // 执行函数会先打印'test',再打印'demo'
// 定义两个函数
func addTwoInts(a : Int, b : Int) -> Int {
return a + b
} func multiplyTwoInt(a : Int, b : Int) -> Int {
return a * b
}
// 定义函数的类型
var mathFunction : (Int, Int) -> Int = addTwoInts // 使用函数的名称
mathFunction(, ) // 给函数的标识符赋值其他值
mathFunction = multiplyTwoInt // 使用函数的名称
mathFunction(, )
// 3.将函数的类型作为方法的参数
func printResult(a : Int, b : Int, calculateMethod : (Int, Int) -> Int) {
print(calculateMethod(a, b))
} printResult(, b: , calculateMethod: addTwoInts)
printResult(, b: , calculateMethod: multiplyTwoInt)
// 1.定义两个函数
func stepForward(num : Int) -> Int {
return num +
} func stepBackward(num : Int) -> Int {
return num -
} // 2.定义一个变量,希望该变量经过计算得到0
var num = - // 3.定义获取哪一个函数
func getOprationMethod(num : Int) -> (Int) -> Int {
return num <= ? stepForward : stepBackward
} // 4.for循环进行操作
while num != {
let oprationMethod = getOprationMethod(num)
num = oprationMethod(num)
print(num)
}
enum <#name#> {
case <#case#>
}
enum Planet {
case Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
enum Direction : Int{
case East = , West , North , Sourth
}
//完整写法
let d : Direction = Direction.North
//简单写法:根据上下文能推导出确定的类型
var d1 = Direction.East
d1 = .West
//枚举类型的使用
let btn = UIButton(type: .Custom)
let btn = UIButton(type: .Custom)
enum Direction : String{
case East = ""
case West = ""
case North = ""
case Sourth = ""
}
var b : Direction = .West
let a = Direction(rawValue: “”)
enum Direction2 : Int{
case East = , West , North , Sourth
//只要给第一个成员赋值,会自动按照递增的方式给后面的成员赋值
//相当于 West = 2, North = 3, Sourth = 4
//注意:这种赋值方法只对整型有效,赋值其它类型无效
struct 结构体名称 {
// 属性和方法

class 类名 : SuperClass {
// 定义属性和方法
}
class Person {
var name : String = ""
var age : Int =
}
let p = Person()
p.name = "lkj"
p.age =
class Person {
var name : String
var age : Int
// 自定义构造函数,会覆盖init()函数
init(name : String, age : Int) {
// 如果在一个方法中, 属性名称产生了歧义(重名), self.不可以省略
self.name = name
self.age = age
}
}
// 创建一个Person对象
let p = Person(name: "why", age: )
class Person: NSObject {
var name : String
var age : Int
// 重写了NSObject(父类)的构造方法 在init前面加上override
override init() {
name = ""
age =
}
}
// 创建一个Person对象
let p = Person()
class Person: NSObject {
// 结构体或者类的类型,必须是可选类型.因为不能保证一定会赋值
var name : String?
// 基本数据类型不能是可选类型,否则KVC无法转化
var age : Int =
// 自定义构造函数,会覆盖init()函数
init(dict : [String : NSObject]) {
// 必须先初始化对象
super.init()
// 调用对象的KVC方法字典转模型
setValuesForKeysWithDictionary(dict)
}
//如果字典中某些键值对,在类中找不到对应的属性,就会报错
//不想让它报错,可以重写setValue forUndefinedKey key:
override func setValue(value: AnyObject?, forUndefinedKey key: String) {
}
}
// 创建一个Person对象
let dict = ["name" : "why", "age" : ]
let p = Person(dict: dict)
deinit {
// 执行析构过程
}
class Person {
var name : String
var age : Int
init(name : String, age : Int) {
self.name = name
self.age = age
}
deinit {
print("Person-deinit")
}
}
var p : Person? = Person(name: "why", age: )
p = nil
ios -- 教你如何轻松学习Swift语法(二)的更多相关文章
- ios -- 教你如何轻松学习Swift语法(一)
目前随着公司开发模式的变更,swift也显得越发重要,相对来说,swift语言更加简洁,严谨.但对于我来说,感觉swift细节的处理很繁琐,可能是还没适应的缘故吧.基本每写一句代码,都要对变量的数据类 ...
- ios -- 教你如何轻松学习Swift语法(三) 完结篇
前言:swift语法基础篇(二)来了,想学习swift的朋友可以拿去参考哦,有兴趣可以相互探讨,共同学习哦. 一.自动引用计数 1.自动引用计数工作机制 1.1 swift和o ...
- 一步一步学习Swift之(二):好玩的工具playground与swfit基础语法
playground好于在于能一边写代码一边看到输出的常量变量的值.不需要运行模拟器. 我们来试一下该工具的用法. 打开xcode6开发工具,选择Get started with a playgrou ...
- IOS之Foundation之探究学习Swift实用基础整理<一>
import Foundation //加载网络数据,查找数据的字符串 let dataurl = "http://api.k780.com:88/?app=weather.city& ...
- JavaScript学习笔记--语法二
条件判断与C语言一样 两种循环.for 循环和 while 循环,JavaScript不区分整数和浮点数,统一用Number表示,所以不是 int i var x = 0; var i; for (i ...
- 轻松学习JavaScript十二:JavaScript基于面向对象之创建对象(二)
四原型方式 我们创建的每一个函数都有一个通过prototype(原型)属性.这个属性是一个对象,它的用途是包括能够由特定类型 的全部实例共享的属性和方法. 逻辑上能够这么理解:prototypt通过条 ...
- 轻松学习JavaScript十二:JavaScript基于面向对象之创建对象(一)
这一次我们深入的学习一下JavaScript面向对象技术,在学习之前,必要的说明一下一些面向对象的一些术语. 这也是全部面对对象语言所拥有的共同点.有这样几个面向对象术语: 对象 ECMA-262把对 ...
- 轻松学习Ionic (二) 为Android项目集成Crosswalk(更新官方命令行工具)
现在集成crosswalk不用这么麻烦了!官方的命令行工具已经能让我们一步到位,省去很多工作,只需在cmd中进入项目所在目录(不能有中文目录,还得FQ),执行: ionic browser a ...
- less学习-语法(二)
变量 @color1:#fff; 选择器 // Variables @mySelector: banner; // Usage .@{mySelector} { font-weight: bold; ...
随机推荐
- SQLServer 客户端远程访问配置
SQL2008报错“请验证实例名称是否正确并且SQL Server已配置为允许远程连接” 第一步: 连接远程服务器时SQL2008报错“请验证实例名称是否正确并且SQL Server已配置为允许远程连 ...
- svn 回滚到上一个版本shell 脚本
#!/bin/sh ############################## # -- # # author jackluo # # Email net.webjoy@gmail.com # ## ...
- DBLINK 创建的注意事项
摘自:http://blog.csdn.net/xulei_19850322/article/details/8219023 配置DBLINK细节很重要,请重点关注下面几点 1.确定被连接数据库可以连 ...
- 转自大楚网:微软SAPI:让你的软件能说会道
[IT168专稿]“没声音,再好的戏也出不来.”这虽然是一句广告,但是也说出了一个道理,我们所开发的软件,特别是一些多媒体软件,要是能够发 出声音,能说会道,将为我们的软件增添不少光彩.同时,我们面临 ...
- Windows Phone 8 Sync
A lot of the below depends on the types of data, how often it is changing, and how often it is likel ...
- [LintCode] Backpack VI 背包之六
Given an integer array nums with all positive numbers and no duplicates, find the number of possible ...
- C语言中指针的使用
什么是指针:指针就是一个变量,是一个存放内容的内存空间.指针存放的内容是另一个内存空间的起始地址.不同于一般变量存放的就是变量值.取值操作符*对于指针的作用是取得指针变量存放的内存地址里面的值,不加* ...
- JAVA 往jar包添加class文件
(1) jar -uf jarfile.jar yourclasses (2) 右击要打包的文件夹,选择“添加到压缩文件”,弹出对话框: 把压缩文件格式改为zip,再把压缩文件名中的反缀改为.jar, ...
- 汇编基础知识之二debug的使用
DEBUG的使用 (要在win32位习题下进行,win7 64位需要安装DosBox和debug这2个软件): 1:win64位下debug的使用教程: 下载debug.exe,这里我把debug放在 ...
- 对ASM存储管理的一些初步理解记录
ASM:Automatic Storage Management,是ORACEL10G以后为了简化存储管理的复杂性,也是为了摆脱对其他厂商的依赖而推出的.ASM作为目前ORACLE推荐的首选存储方案, ...