Swift的一些基础知识

swift

  • 2014年6月swift发表
  • 1.创建对象的不同,创建一个view对象
/*
 创建对象:
 OC:alloc/initWithXXX
 Swift:  (XXX:)

 调方法
 OC [UIColor redColor];
 Swift:UIColor.redColor()

 枚举
 OC :UIButtonTypeContactAdd
 Swift:UIButtonType.ContactAdd

 创建结构体
 OC:CGPointMake()
 Swift:  CGPoint()

 */

import UIKit

let view=UIView(frame:CGRect(x: 0, y: 0, width: 100, height: 100))
view.backgroundColor=UIColor.redColor()

let btn=UIButton(type: UIButtonType.ContactAdd)
btn.center=CGPoint(x: 50, y: 50)
view.addSubview(btn)
  • 2.常量和变量
/*
 Swift中定义常量和变量用let/var
 let代表定义一个常量
 var代表定义一个变量
  Swift中定义常量和变量不需要写数据类型,编译器会根据我们后面数据的真实类型自动推导
 按住option+鼠标左键,查看方法或者变量

 */
//常量
let num=10.1
//num=9.0//常量不能修改

//变量

//Swift开发中每一条语句后面可以不写分号,但是写上也不会报错
//       如果同一行有多条语句,那么每条语句后面必须写上分号
var value=10
value=8
//Swift中打印输出用print()
print(value)
  • 3.数据类型转换
/*
 Swift中不存在隐式类型转换,所有的类型必须是显示的
*/

let num1=10
let num2 = 9.1
//得到int和double
let iSum = num1+Int(num2)
let dSum = Double(num1)+num2

//Swift是强语言 / OC是弱语言
//Swift数据类型第一个字母是大写
let num3:Int=10
let num4:Int = Int(10.1)
  • 4.逻辑分支 if switch
/**

 Swift中的if的使用方式“基本上”和OC一致
 1.Swift中的if可以省略()
 2.Swift中哪怕if后面只有一条语句,也不能省略{}
 3.在C和OC中,有一个概念非0即真
   在Swift中,条件只能放bool值,取值只有两个ture/false
 */

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

/**

 Swift中的switch
 1. 后面的()可以省略
 2.OC中的switch如果没有break会穿透,但是Swift不会穿透
 3.OC中如果要在case中间定义变量,必须加上{}确定作用域,而Swift中不用
 4.OC中default的位置可以随便写,只有所有的case不满足才会执行default,而Swift中的default只能放在最后
 5.OC中的default可以省略,Swift中“大部分”情况下不能省略

 */
let num1 = 1

switch num1{

case  1:
    print("1")
case 2:
    print("2")
case 3:
    print("3")
default:
    print("other")
}
  • 5.循环while
/**

 Swift中的for循环,和OC基本一致
 */
//Swift特色循环
//0..<10代表一个区间范围 从0开始到9 ,包含头不包含尾

//09赋值给i,再执行print(i)
for i in 0..<10
{
    print(i)
}
//不需要i的值, _ 代表忽略,如果不关心某个参数,就可以使用 _
//Swift中 _ 使用频率非常高
for _ in 0..<10
{
    print("xxp")
}

//0...10代表一个区间范围 从0开始到10 ,包含头包含尾


for i in 0...10
{
    print(i)
}

/* Swift中的while循环,和OC差不多,而且在开发中很少使用while*/

var a = 0

while a < 10
{
print(a)
a += 1
}

/*
 Swift升级2.0之后,do while 循环发生了很大的变化
 do while没有do乐,因为do被用作捕获异常了,取代之前do的是repeat
 */
var b = 0
repeat
{
print(b)
    b+=1
}while b<10
  • 6.三目运算符与可选绑定
//: Playground - noun: a place where people can play

import UIKit

let num = 10
if num==5{
print("5")
}else  {
print("10")}

/**
 在OC中if else 可以使用三目运算符来简写
 注意:在做Swift开发中三目运算符用的非常非常多
 */

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

/*可选类型:代表可以有也可以没有 Optional
 convenience init?
 以后但凡看到一个方法或者数据类型后面有? ,就代表返回的是一个可选类型

 初学者看到? 需要淡定一点,因为从OC转入Swift之后有? ! ??

 使用可选类型需要注意,如果直接打印了可选类型,那么打印出来的值会被Optional包裹,不想被包裹就加!
 ! 代表告诉编译器,可选类型中一定有值,称为强制解析
 如果可选类型中没有值,而又进行了强制解析,那么程序就会崩溃
*/
let url = NSURL(string: "http://www.520it.com/")
print(url)

print(url!)

let url1 = NSURL(string: "http://www.520it.com/图片")
print(url1)

//可选绑定
//会将url中的值取出来赋值给urlFinal变量,如果值不为nil,那么就可以进入{}
if let urlFinal = url{
let request=NSURLRequest(URL: urlFinal)
}
  • 7.字典
import UIKit

//创建字典
//@{@"key":@"value"};
//Swift中创建字典和创建数组一样,用[]
//[String : NSObject]类型是以后做ios开发中最常见的一种格式
let dict=["name": "xp","age":"26"]
//获取value
dict["name"]
//遍历字典
for key in dict.keys
{
    print(dict[key])
}
//Swift利用元祖类型遍历字典,会自动将字典中的key赋值给元祖中的第一个遍历,将value赋值给元祖中的第二个变量 k v 是随意取的,也可以叫kk vv
//注意:第一个是key,第二个是value
for (k,v) in dict
{
    print(k)
    print(v)
}

//新增key / value
//如果对应的key在字典中没有,那么就会新增
var dict2=["name": "xp","age":"26"]
dict2["gender"]="man"
dict2

//更新key/value
//如果对应的key在字典中有,那么就会更新
dict2["name"]="zhangsan"
dict2

//删除
dict2.removeValueForKey("name")
dict2



// 字典的合并
var dict4 = ["name" : "yz", "age" : 20]
var dict5 = ["height" : 1.87, "phoneNum" : "+86 110"]
// 字典不可以相加合并
for (key, value) in dict4 {
    dict5[key] = value
}
dict5
  • 8.字符串
//: Playground - noun: a place where people can play

import UIKit
//在OC中定义字符串用@""  Swift中 ""
/*注意点: OC中的字符串是NSString ,Swift中的字符串是String
          OC中的字符串是一个对象 ,继承于NSObject
          Swift中的字符串是一个结构体,所以性能比OC中的高
*/
var str:String = "xxp"

//拼接
var str1 = "cool"
str += str1
//格式化
let num=26
let name = "xp"
//目标 name=xp ,age=26
//在Swift中可以使用 \()来拼接其他值
var str3 = "name= \(name),age=\(num)"
//09: 08:13
var str4=String(format: "%02d:%02d:%02d",arguments:[9,8,13])


//截取
//注意: 在Swift中,如果需要截取字符串,建议使用OC的字符串来截取,因为Swift中String的字符串截取方法使用起来非常复杂
//Swift中的字符串可以和OC中的字符串非常方便的进行转换,只需要定义字符串的时候指定字符类型为NSString或者在后面加上as NSString
var str5:NSString="xxp nb"
var str6 = "xxp fc nb" as NSString

var subStr=str5.substringWithRange(NSMakeRange(2, 3))

  • 9.函数
/*
 Swift定义函数的格式:
 语义:将前面计算的结果返回给  -> 返回值
 func 函数名称(参数列表) -> 返回值
 {
     执行代码
 }
 */

//无返回值无参数
//1.()替代Void 2.省略->Void
func say() -> Void
{
    print("hello")
}

say()

func say1() -> ()
{
    print("hello")
}

say1()

func say2()
{
    print("hello")
}

say2()

//无返回值有参数
func sum(a:Int ,b:Int)
{
    print(a+b)
}
sum(10, b: 20)
//有返回值无参数
func getNum() -> Int
{
    return 10
}
print(getNum())
//有返回值有参数
func sum1(a:Int ,b:Int) -> Int
{
    return (a+b)
}
print(sum1(10, b: 10))
  • 10.闭包
//
//  ViewController.swift
//  闭包
//
//  Created by xiao on 16/9/21.
//  Copyright © 2016年 xiao. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        /**
         闭包和OC中的Block非常像是
         OC中的Block类似于匿名函数
         闭包是用来定义函数
         作用:Block是用于保存一段代码,在需要的时候执行
              闭包也是用于保存一段代码,在需要的时候执行
         做一个耗时操作
         */
        /*
         闭包的基本格式:
         in 的含义是用于区分形参返回值和执行代码
         {
           ( 形参列表 ) -> ( 返回值 )
           in
           需要执行的代码
         }
         */
    }

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        //Swift中的dispatch_async回调的是一个闭包
        dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in
        print(NSThread.currentThread())
         print("执行耗时操作")
            dispatch_async(dispatch_get_main_queue(), {
                /*
                 闭包的简写:
                 如果闭包没有参数也没有返回值,那么 in之前的东西都可以删除,包括in
                 */
//                () -> Void in
                print(NSThread.currentThread())
                print("回到主线程跟新UI")
            })
        }
    }

}



打印结果
<NSThread: 0x7fb3227120a0>{number = 2, name = (null)}
执行耗时操作
<NSThread: 0x7fb3224049a0>{number = 1, name = main}
回到主线程跟新UI
  • 11.
  • 12.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Swift基础篇中,你将学习到以下几个新知识点: 1. 变量和常量:Swift中使用var关键字定义变量,使用let关键字定义常量。变量可以被修改,而常量的值一旦设定就不能再改变。 2. 数据类型:Swift提供了多种数据类型,包括整型、浮点型、布尔型、字符串等。你可以根据需要选择合适的数据类型来存储和操作数据。 3. 可选类型:可选类型是Swift中的一种特性,用于处理可能为空的值。通过使用可选类型,你可以明确表示一个值是存在还是不存在。 4. 控制流:Swift提供了多种控制流语句,包括条件语句(if语句、switch语句)、循环语句(for-in循环、while循环)等。这些语句可以帮助你根据不同的条件执行不同的代码块。 5. 函数:函数是一段完成特定任务的独立代码块。在Swift中,你可以定义自己的函数,并通过参数和返回值来传递数据。 6. 结构体和类:结构体和类是Swift中用于封装数据和功能的重要工具。你可以使用结构体和类来创建自定义的数据类型,并定义属性和方法来操作这些数据类型。 7. 集合类型:Swift提供了多种集合类型,包括数组、字典和集合。这些集合类型可以用于存储和操作多个值。 8. 可选绑定:可选绑定是一种用于安全地解包可选类型的方法。通过可选绑定,你可以判断可选类型是否包含值,并将其解包并赋值给一个临时变量或常量。 9. 错误处理:Swift中的错误处理机制可以帮助你处理可能发生的错误情况。你可以使用try、catch语句来捕获和处理错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值