美文网首页
swift 初学知识点归纳

swift 初学知识点归纳

作者: 蹲在路口的男孩丶 | 来源:发表于2016-06-13 21:51 被阅读36次

1.初始化方法和类方法
定义一个类,继承与 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")
}

}

创建一个 student 类,继承与 Person
import UIKit

class Student: Person {

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

}

在 viewController.swift 中调用类中的方法
import UIKit

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

    // 调用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 字样,对可选类型进行强制解包就可以了
    
    let stu = Student()
    stu.sayHai()
    
    
    let stu = Student(name: "123", age: 11)
    stu.sayHai()
    
    
    Person.saySomething()
    Person.eatSomething()

2.KVC
创建一个类,继承与 NSObject

import UIKit

class Animal: NSObject {

// KVC 调用流程: KVC 是一种通过字符串间接的访问对象属性的一种方式
// 1.调用 setValuesForKeysWithDictionary
// 2.调用 setValue:forKey
// 如果有找到对象的 key 值,则初始化并且赋值,没有的话则到第三步
// 3.setValue:forUndeFinedKey:

var name:String?
var age:Int = 0// 基本数据类型在模型里面不能为可选类型,否则在 KVC 赋值的时候会找不到相应的 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 中调用类中的方法

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
} 

}

调用

   // 单例写法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.协议

   import UIKit
   // protocol 标识符如果前面没有@objc 的话,表示协议里面的方法都必须实现
 protocol womanDelegate
{
   func manMakeMoney()
  }

     // 如果协议里面有一些方法是选择实现的,必须在标识符 protocol 前面加上@objc, 并且选择实现的那些方法前面要加上 optional 修饰,必须实现的方法则一样不用修饰符
      @objc protocol womanOptionalDelegate{
// 可选择实现的方法 
      optional func washClothes()
// 必须实现的方法
    func introduceSelf()
  }


   class Woman: NSObject {


     var delegate:womanDelegate?

      var optionalDelegate:womanOptionalDelegate?
     }

遵守协议

   class ViewController:UIViewController,womanDelegate,womanOptionalDelegate {

调用

     // 协议
    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.网络请求

 // 网络请求
    // 以后写闭包回调的时候要把参数都写成可选类型
    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 如果有错的话警告
        // try! 如果有出错直接程序崩溃
        // try? 返回值是可选类型的
        if let temp = data{
            do{
                let rootDict = try NSJSONSerialization.JSONObjectWithData(temp, options: NSJSONReadingOptions.MutableContainers)
                print(rootDict)
            }catch{
                print(error)
            }
        }
    }
    dataTask.resume()

相关文章

  • swift 初学知识点归纳

    1.初始化方法和类方法定义一个类,继承与 NSObject 在里面写如下代码import UIKit class ...

  • Swift入门:可选类型

    本文来自Hacking with Swift给swift初学者的入门课程Swift for Complete Be...

  • swift 控制器之间的跳转与传值

    初学swift 记录一下笔记 AppDelegate.swift ViewController.swift Sec...

  • Swift Programmatically-纯代码初学简易Sw

    Swift Programmatically-纯代码初学简易Swift项目 无需操作任何 StoryBoard 或...

  • 初学swift

    在老公的指导下,开始学习swift语言,要求不高,只要能懂得基本编程语言就可以; 介绍了xcode软件,真心复杂,...

  • swift初学

    swift会根据我们为变量的赋值自动推导变量的类型,这个特性,在swift中叫做Type inference va...

  • Swift初学

    https://zhuanlan.zhihu.com/p/19778847?refer=swift

  • 初学swift

    1. 桥头文件已经删除,工程运行出错,可在此处删除桥头文件。 1.在Build Setting -> Object...

  • 【LearnSwift】怎么使用?和!

    参考文章 swift知识点 [1] Swift Optionals: When to use if let, wh...

  • 知识点归纳

    同比、环比的定义 是本期统计数据与上期比较,例如2014年7月份与2014年6月份相比较,叫环比。与历史同时期比较...

网友评论

      本文标题:swift 初学知识点归纳

      本文链接:https://www.haomeiwen.com/subject/mknydttx.html