swift 初學(xué)知識(shí)點(diǎn)歸納

1.初始化方法和類方法
定義一個(gè)類,繼承與 NSObject 在里面寫如下代碼
import UIKit

class Person: NSObject {

var name:String?
var age:Int?

// init 初始化方法
override init() {
    super.init()
    name = "nihao"
    age = 18
}
// 重載 init 方法
init(name:String,age:Int) {
    super.init()
    self.name = name
    self.age = age
}
func sayHi(){
    print("ni hao")
}

// 類方法
// 寫法1:用 class 修飾,表示類方法,能夠被子類重載
class func saySomething() {
    print("6666")
}
class func PersonWithAndAge(name:String,age:Int)->Person {
    let p = Person(name: name, age: age)
    return p
}
// 寫法2:用 static 修飾,也表示類方法,不能夠被子類重載
static func eatSomething(){
    print("eat food")
}

}

創(chuàng)建一個(gè) student 類,繼承與 Person
import UIKit

class Student: Person {

func sayHai() {
    print("say hai")
}

}

在 viewController.swift 中調(diào)用類中的方法
import UIKit

class ViewController: UIViewController{
override func viewDidLoad() {
super.viewDidLoad()

    // 調(diào)用init 初始化方法
    let person1 = Person()
    print(person1.name,person1.age)
    
    // 重載的 init 方法
    let person2 = Person(name:"nihao",age:18)
    print("person2.name = \(person2.name!),person2.age = \(person2.age!)")
    person2.sayHi()
    // 如果要去掉打印可選類型的 optional 字樣,對(duì)可選類型進(jìn)行強(qiáng)制解包就可以了
    
    let stu = Student()
    stu.sayHai()
    
    
    let stu = Student(name: "123", age: 11)
    stu.sayHai()
    
    
    Person.saySomething()
    Person.eatSomething()

2.KVC
創(chuàng)建一個(gè)類,繼承與 NSObject

import UIKit

class Animal: NSObject {

// KVC 調(diào)用流程: KVC 是一種通過(guò)字符串間接的訪問(wèn)對(duì)象屬性的一種方式
// 1.調(diào)用 setValuesForKeysWithDictionary
// 2.調(diào)用 setValue:forKey
// 如果有找到對(duì)象的 key 值,則初始化并且賦值,沒有的話則到第三步
// 3.setValue:forUndeFinedKey:

var name:String?
var age:Int = 0// 基本數(shù)據(jù)類型在模型里面不能為可選類型,否則在 KVC 賦值的時(shí)候會(huì)找不到相應(yīng)的 key 值
var gender:String?

init(dict:[String:AnyObject]) {
    super.init()
    setValuesForKeysWithDictionary(dict)
}

override func setValue(value: AnyObject?, forKey key: String) {
    super.setValue(value, forKey: key)
}

override func setValue(value: AnyObject?, forUndefinedKey key: String) {
    
}

}

在 viewController.swift 中調(diào)用類中的方法

import UIKit

class ViewController: UIViewController{

override func viewDidLoad() {
super.viewDidLoad()

   let dict = ["name":"xiazi","age":69,"gender":"雄"]
   let animal = Animal(dict: dict)
   print("name = \(animal.name),age = \(animal.age),gender = \(animal.gender)")

3.單例
import UIKit

class SingleTon: NSObject {

var name:String?
// swift 單例寫法1
/* 格式:
static let 名字:類型 = {
let instance = 類型()
return instance
}()
*/
static let shareSingleTon:SingleTon = {
    let instance = SingleTon()
    return instance
}()

// swift 單例寫法2
/* 格式:
static let instance = 類名()
class func shareSingleTon()->返回值類型
{
return instance
}
*/

static let instance = SingleTon()
class func shareSingleTon()->SingleTon {
    return instance
} 

}

調(diào)用

   // 單例寫法1

    let s1 = SingleTon.shareSingleTon
    s1.name = "nima"
    
    let s2 = SingleTon.shareSingleTon
    print("s2.name = \(s2.name)")
    
    let s3 = SingleTon.shareSingleTon
    print("s3.name = \(s3.name)")
    
    // 單例寫法2
    let s1 = SingleTon.shareSingleTon()
    s1.name = "nima"
    
    let s2 = SingleTon.shareSingleTon()
    print("s2.name = \(s2.name)")
    
    let s3 = SingleTon.shareSingleTon()
    print("s3.name = \(s3.name)")

4.協(xié)議

   import UIKit
   // protocol 標(biāo)識(shí)符如果前面沒有@objc 的話,表示協(xié)議里面的方法都必須實(shí)現(xiàn)
 protocol womanDelegate
{
   func manMakeMoney()
  }

     // 如果協(xié)議里面有一些方法是選擇實(shí)現(xiàn)的,必須在標(biāo)識(shí)符 protocol 前面加上@objc, 并且選擇實(shí)現(xiàn)的那些方法前面要加上 optional 修飾,必須實(shí)現(xiàn)的方法則一樣不用修飾符
      @objc protocol womanOptionalDelegate{
// 可選擇實(shí)現(xiàn)的方法 
      optional func washClothes()
// 必須實(shí)現(xiàn)的方法
    func introduceSelf()
  }


   class Woman: NSObject {


     var delegate:womanDelegate?

      var optionalDelegate:womanOptionalDelegate?
     }

遵守協(xié)議

   class ViewController:UIViewController,womanDelegate,womanOptionalDelegate {

調(diào)用

     // 協(xié)議
    let woman = Woman()
    woman.delegate = self
    woman.optionalDelegate = self
    woman.delegate?.manMakeMoney()


 func manMakeMoney() {
    print("man make money")
}

func introduceSelf() {
    print("i am woman")
}

5.網(wǎng)絡(luò)請(qǐng)求

 // 網(wǎng)絡(luò)請(qǐng)求
    // 以后寫閉包回調(diào)的時(shí)候要把參數(shù)都寫成可選類型
    let urlString = "http://mobile.ximalaya.com/mobile/others/ca/album/track/5541/true/1/15"
    let url = NSURL(string: urlString)
    let dataTask = NSURLSession.sharedSession().dataTaskWithURL(url!) { (data, response, error) -> Void in
        // try 如果有錯(cuò)的話警告
        // try! 如果有出錯(cuò)直接程序崩潰
        // try? 返回值是可選類型的
        if let temp = data{
            do{
                let rootDict = try NSJSONSerialization.JSONObjectWithData(temp, options: NSJSONReadingOptions.MutableContainers)
                print(rootDict)
            }catch{
                print(error)
            }
        }
    }
    dataTask.resume()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,058評(píng)論 0 9
  • 1.OC里用到集合類是什么? 基本類型為:NSArray,NSSet以及NSDictionary 可變類型為:NS...
    輕皺眉頭淺憂思閱讀 1,478評(píng)論 0 3
  • Swift 介紹 簡(jiǎn)介 Swift 語(yǔ)言由蘋果公司在 2014 年推出,用來(lái)撰寫 OS X 和 iOS 應(yīng)用程序 ...
    大L君閱讀 3,428評(píng)論 3 25
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語(yǔ)閱讀 4,098評(píng)論 0 6
  • 我們常常會(huì)聽說(shuō) Objective-C 是一門動(dòng)態(tài)語(yǔ)言,那么這個(gè)「動(dòng)態(tài)」表現(xiàn)在哪呢?我想最主要的表現(xiàn)就是 Obje...
    Ethan_Struggle閱讀 2,338評(píng)論 0 7

友情鏈接更多精彩內(nèi)容