Swift学习

swift-基础-基本语法1

2016-08-15  本文已影响36人  埃林的奶酪

常量和变量

let num : Int
num = 33
let num2 : Int = 44
var value : Double
value = 22.3
var value2 : Double = 33.33
var n1 = 10.1
var n2 = 10
var sum = n1 + n2 // 这么写是错的,OC中会隐式转换,Swift中不会
var sum = n1 + Double(n2) // 必须这么写

分支

let num = 10
if num == 10
{
    print("num是10")
}

三目运算符

let num = 10
let res = (num == 10) ? 10 : 5

可选类型Optional ? !看到问号或者感叹号那么说明是可选类型

let url = NSURL(string:"[http://www.520it.com")](http://www.520it.com"))
print(url)
print(url!)
let url1 = NSURL(string:"[http://www.520it.com/哈哈")](http://www.520it.com"))
print(url!)// 此处会崩,因为url1后面有中文,导致url1为nil,对nil强制解包会崩

可选绑定

let url = NSURL(string:"[http://www.520it.com/哈哈")](http://www.520it.com"))
if url2 = url{    print(url2) // 这里不会打印,因为url为nil,上面的if会过滤掉
}
let url3 = NSURL(string:"[http://www.520it.com")](http://www.520it.com"))
if url4 = url{    print(url2) // 这里会打印,而且不带Optional,系统会自动解包
}

guard守护

guard 判断条件 else{
    return
}
guard let url2 = url else{
    print("url2为空")
    return
}
// 能来到这里说明url2肯定有值
print(url2)

自动解包

let url : NSURL = NSURL(string:"[http://www.520it.com")](http://www.520it.com"))
let url1 : NSURL? = NSURL(string:"[http://www.520it.com")](http://www.520it.com"))
let url2 : NSURL! = NSURL(string:"[http://www.520it.com")](http://www.520it.com"))
let url3 : NSURL = NSURL(string:"[http://www.520it.com")](http://www.520it.com"))!

??判断

        // 这里str是个可选类型
        let str: String? = nil
        // result不是可选类型(经过??判断之后,肯定有值)

        let result = str ?? "123"

        print(result)

断言

        assert(access_token != nil, "使用loadUserInfo()方法前必须先授权")

        assert(uid != nil, "使用loadUserInfo()方法前必须先授权")

        let params = ["access_token": access_token!,

                      "uid": uid!]

where

            if let sourceStr: NSString = status?.source where sourceStr != ""

            {

                let startIndex = sourceStr.rangeOfString(">").location + 1

                let length = sourceStr.rangeOfString("<", options: NSStringCompareOptions.BackwardsSearch).location - startIndex

                let rest = sourceStr.substringWithRange(NSMakeRange(startIndex, length))

                sourceLabel.text = "来自\(rest)"

            }

循环

for var i = 0;i < 10;i ++ 
{
    print(i)
}
for item in ["1","2","3"]
{
    print(item)
}
for i in 0..<10 // 倒过来就是从后往前遍历
{
    print(i)
}
var index = 0
while index < 10
{
    print(index)
    index ++
}

数组

var array1 = [1,2,3]
var array2 = [4,5,6]
var array2 = ["4","5","6"]
array1 += array2 // 这样就完成了合并
// 让数组按照item的attribute属性来排序
array = array!.sort({ (item1, item2) -> Bool in

            return item1.attribute > item2.attribute

        })

字典

// 定义方法1:定义的同时赋值
let dict1 = ["name" : "lhj","age" : 29]
// 定义方法2:定义指明类型,再赋值
let dict2:[String:AnyObject]
dict2 = ["name" : "lhj","age" : 29]
for key in dict.keys
{
    print(key)
}
// Swift特有方法,会将字典中的key赋值给for后面的括号中的第一个变量,将value赋值给第二个变量(括号中的变量称之为元祖)
for (k,v) in dict
{
    print(k)
    print(v)
}
var dict1:[String:AnyObject] = ["name" : "lhj","age" : 29]
var dict2:[String:AnyObject] = ["score" : 99]
for (k,v) in dict1
{
    dict2[k] = v
}
上一篇 下一篇

猜你喜欢

热点阅读