swift

Swift4相对于Swift3的改变

Swift学习笔记--Array篇

 

Swift利用反射获取对象属性列表 good

class SuperClass: NSObject {
    var name:String = "zym_chen"
    var qq: String = "625271562"
}

class SubClass: SuperClass {
    var age:Int = 1
    var sex:Bool = true
    
    class func test() {
        let obj: SubClass = SubClass()
        let morror = Mirror.init(reflecting: obj)
        let superMorror = Mirror.init(reflecting: obj).superclassMirror

        for (name, value) in (superMorror?.children)! {
            print("父类属性名:\(name) 值: \(value)")
        }
        for (name, value) in (morror.children) {
            print("子类属性名:\(name) 值: \(value)")
        }
    }
}

// 打印结果:
父类属性名:Optional("name") 值: zym_chen
父类属性名:Optional("qq") 值: 625271562
子类属性名:Optional("age") 值: 1
子类属性名:Optional("sex") 值: true

Swift获取对象(Object)类型(Class)

Swift常用内置函数介绍

Swift中结构体(Struct)和类(Class)的区别

苹果发布Xcode 7.3,Swift更新至2.2版本

Swift Mirror 类型实践 —— 快速将类转换为 Json

Swift反射API及其用法 好详细

Swift json字典转模型 项目记录  简洁

 swift 基础代码库 不错

Swift开发第二篇——extension及fatalError

上面的数组长度为3,如果我们在开发过程中由于某些原因,在使用上面的数组时写成了 array[100] 就会报数组越界错误,程序崩溃。

  在 OC 中数组越界输出的错误信息为:*** Terminating app due to uncaught exception 'NSRangeException',reason: '*** -[__NSArrayI objectAtIndex:]:index 100 beyond bounds [0 .. 2]'

  在 Swift 中为 fatal error: Array index out of range

  在调试时我们可以用断言来排除类似这样的问题,但是断言只会在 Debug 环境中有效,而在 Release 编译中所以变得断言都将被禁用。所以我们会考虑以产生致命错误(fatalError)的方式来种植程序

KVC之-setValue:forKey:方法实现原理与验证

没想到Swift里KVC还能有坑

view.setValue(UIViewTintAdjustmentMode.automatic.rawValue, forKey: "tintAdjustmentMode")

你TM能不能告诉我xcode7.0的是swift什么版本

xcode7.3 - swift2.2 
xcode 7 beta - swift2.0 
xcode 6才开始支持swift 

swift版本对应Xcode版本
Swift 1.0-------Xcode 6
Swift 1.1-------Xcode 6.1.1
Swift 1.2-------Xcode 6.3
Swift 2.0-------Xcode 7.0
Swift 2.1-------Xcode 7.1
Swift 2.1.1-----Xcode 7.2
Swift 2.2-------Xcode 7.3

使用Swift 字典模型互转 就是这么简单 good 

Dict2Model_Demo 

swift 3.0 json解析、字典转模型三种方案

1.第一种是自带的字典转模型,自带的需要实现系统的setValue方法,然后自己还要实现dictToModel方法即可解析,这里我已经实现好了

2.第二种是采用swiftyJson,当然swiftyJson也可以直接解析, 结合 MJextension组合解析

3、第三种就是直接用MJExtension解析,如果你还对oc的MJExtension念念不让,在swift 3.0中只需要桥接就可以使用了,具体桥接方法只需直接将MJExtesnsion文件拖入swift工程中,系统会自动帮你生成一个桥接文件

 

Swift学习笔记(三十一)——参数的默认值

如果一个参数有默认值,那么在调用的时候就不一定需要传入参数,可以使用默认值

 iOS中的round/ceil/floorf函数略解

 round:如果参数是小数,则求本身的四舍五入。

ceil:如果参数是小数,则求最小的整数但不小于本身.
floor:如果参数是小数,则求最大的整数但不大于本身. 
 

Swift 4.0:访问级别(访问控制)

swift public、internal和private

  • public。可以访问自己模块中的任何public实体。如果使用import语句引入其他模块,我们可以访问其他模块中的public实体。

  • internal。只能访问自己模块的任何internal实体,不能访问其他模块中的internal实体。internal可以省略,换句话说,默认访问限定是internal

  • private。只能在当前源文件中使用的实体,称为私有实体。使用private修饰,可以用作隐藏某些功能的实现细节

Swift - 访问控制(fileprivate,private,internal,public,open) good

 

去空格 whitespaceAndNewlineCharacterSet和过滤字符串

NSCharacter​Set

swift Set(集合)

let oddDigits: Set = [1, 3, 5, 7, 9]

let evenDigits: Set = [0, 2, 4, 6, 8]

let singleDigitPrimeNumbers: Set = [2, 3, 5, 7]

oddDigits.union(evenDigits).sort()

// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

oddDigits.intersect(evenDigits).sort()

关于 Swift 中的 Array.contains 方法

 

另外,contains 函数还提供了另外一种参数重载,也可以叫做 predicate 模式,方法签名如下:

contains(predicate: (Self.Generator.Element) throws -> Bool )

这个方法接受一个闭包类型的参数,这个闭包的作用就是用来判断某个元素是否符合我们的判断条件,然后返回相应的 Bool 值。比如这样:


let numbers = [1,2,3,4,5,6,7];
numbers.contains { (element) -> Bool in
    
    if element % 3 == 0 {
        return true
    }else {
        return false
    }
    
}



swift编码出现Call can throw, but it is not marked with***错误的解决

func getThunbImage(url: NSURL) -> (UIImage) {
        let asset: AVURLAsset = AVURLAsset(URL: url, options: nil)
        let gen: AVAssetImageGenerator = AVAssetImageGenerator(asset: asset)
        gen.appliesPreferredTrackTransform = true
        let time: CMTime = CMTimeMakeWithSeconds(0, 1)
        var actualTime: CMTime = CMTimeMake(0, 0)
        var thumb: UIImage = UIImage()
        do {
        let image: CGImageRef = try gen.copyCGImageAtTime(time, actualTime: &actualTime)
        thumb = UIImage(CGImage: image)
        } catch { }
        return thumb
    }

 

 swift与objective-c混编

窥探 Swift 之数组与字典

Void removeAll(): 移除数组中全部元素,有一个可选参数,keepCapacity。如果keepCapacity = YES的话,那么数组移除元素后,其存储空间还是存在的,在此往里存储值,不需再给他分配存储空间了。如果keepCapacity=NO的话,那么数组的存储空间就会被回收掉。

  

【iOS】Swift3 Swift2 String转int,从TextField里面获取Int类型的数值

从Swift2开始,.toInt()方法就被移除了,现在转Int只需要这样写:

String s = "123"
let myInt = Int(s)

如果从TextField里面获取Int类型的数值,只需要:

let myInt = Int(mytextfield.text!)

 

IOS Int 转NSNumber NSString转int

 

Swift - AnyClass,元类型和 .self

Swift - 关键字(typealias、associatedtype)

Swift - 析构过程(Deinitialization)

 

Swift - 元组(Tuples)

 Swift 类型的检査与转换(is,as,AnyObject,Any)

if  fruit is Apple

 

 

 

 

 

Alamofire网络库基础教程:使用 Alamofire 轻松实现 Swift 网络请求

swift中,as!与as?有什么区别?

选项形式(as?)的操作执行转换并返回期望类型的一个选项值,如果转换成功则返回的选项包含有效值,否则选项值为 nil 强制形式(as )的操作执行一个实例到目的类型的强制转换,因此使用该形式可能触发一个运行时错误。

Swift 学习之二十一:?和 !(详解)

    // optional binding  
    // 如果strValue == nil, 那么结果就是nil,不会调用String的hasValue  
    // 如果strValue != nil, 就返回strValue对应的hashValue值并赋值给常量hashValue  
    if let hashValue = strValue?.hashValue {  
      // do something if neccessary  
    } 

使用!来声明变量,会成为隐式强拆包可选类型,这表示这个类型永远不会出现nil的情况,但一旦出来,在调用时就会崩溃。

初探swift语言的学习—Object-C与Swift混编

用桥接文件 targets->build settings ->Object-C Bridging Header

 

 Swift中的iOS设计模式1

  • 构建设计模式:Singleton。
  • 架构设计模式:MVC,Decorator,Adapter,Facade 外观模式Facade(结构型) 。
  • 行为设计模式:Observer,Memento 备忘录模式。

The Swift Programming Language (Swift 2.2) 官方

The Swift Programming Language 中文版

 swift小组

 Swift开发语法 简书

  • 从OC转换为Swift的规律: alloc initXXX --> (xxxx:)
    OC: [[UIView alloc] init] -- [[UIView alloc] initWithFrame:]
    Swift: UIView() -- UIView(frame: )
  • 分号
    • 在OC中每一条语句后面必须跟上一个;, Swift中如果一行只有一条语句, 那么;可以省略
  • 调用方法
    OC: [UIColor redColor];
    Swift: UIColor.redColor()
  • var 定义变量,设置之后可以修改
  • let 定义常量,设置之后不可以修改
  • 语句末尾不用使用 ;
  • 在 Swift 中使用 print() 替代 OC 中的 NSLog
  • print 的性能更好
  • Swift 是对类型要求非常严格的一门语言,一个值永远不会被自动转换成其他类型
  • 在Swift开发中, 一般情况下先用let, 只要需要修改数据时才用var, 使用let的好处, 可以避免数据被修改, 可以保证数据安全性

  OC中有显示转换和隐式转换 double value = 10.1 + 9

  Swift中只有显示转换没有隐式转换, 也就是说只有相同类型的数据才能进行赋值和计算

  • 只要将多个相同或者不同的数据用()括起来就是元祖
  • 优点: 在以前没有元祖之前C和OC语言是通过传入指针或者返回结构体的方式来返回多个值的,而有了元祖之后就可以实现让一个函数返回多个值

什么是可选类型: 一个变量可以有值也可以没有值, 我们就称之为可选类型

  • 在Swift中如果使用一个可选类型的变量/常量, 必须解包操作
    • 解包: 只需要在变量/常量后面加上 !
    • !含义: 代表告诉系统该变量/常量中一定有值, 如果强制解包一个没有值的常量/变量,那么会报错

如果有 ? 表示改方法有可能无法实例化到正确的对象

  • ?? 是一个非常有用的操作符,能够快速对 nil 进行判断
  • 如果对象是 nil,则使用 ?? 后面的值代替前面的 nil 值参与计算

单例: static let shareInstance: NetworkTools = NetworkTools()

 我在开发第一个Swift App过程中学到的四件事

 

posted @ 2016-02-16 10:42  米粥米  阅读(205)  评论(0编辑  收藏  举报