Swift之文件管理

原创 2015年07月10日 11:48:17
import Foundation

//一个存储属性就是存储在特定类或结构体的实例里的一个常量或变量
struct FixedLengthRange {
    var firstValue: Int
    let length: Int
}
var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)
// 该区间表示整数0,1,2
rangeOfThreeItems.firstValue = 6
// 该区间现在表示整数6,7,8



//常量和存储属性
let rangeOfFourItems = FixedLengthRange(firstValue: 0, length: 4)
// 该区间表示整数0,1,2,3
//rangeOfFourItems.firstValue = 6
// 尽管firstValue诗歌变量属性,这里还是会报错




//延迟存储属性。延迟存储属性是指 当第一次被调用的时候才会计算其初始值的属性
//在属性声明前使用lazy来标示一个延迟存储属性,必须将延迟存储属性声明成变量
class DataImporter {
    /*
    DataImporter 是一个将外部文件中的数据导入的类。
    这个类的初始化会消耗不少时间。
    */
    var fileName = "data.txt"
    // 这是提供数据导入功能
}

class DataManager {
    lazy var importer = DataImporter()
    var data = [String]()
    // 这是提供数据管理功能
}

let manager = DataManager()
manager.data.append("Some data")
manager.data.append("Some more data")
// DataImporter 实例的 importer 属性还没有被创建

print(manager.importer.fileName)
// DataImporter 实例的 importer 属性现在被创建了
// 输出 "data.txt”





//计算属性。类、结构体和枚举可以定义 计算属性,计算属性不直接存储值,而是提供一个 getter 来获取值,一个可选的 setter 来间接设置其他属性或变量的值
struct Point {
    var x = 0.0, y = 0.0
}
struct Size {
    var width = 0.0, height = 0.0
}
struct Rect {
    var origin = Point()
    var size = Size()
    var center: Point {
        get {
            let centerX = origin.x + (size.width / 2)
            let centerY = origin.y + (size.height / 2)
            return Point(x: centerX, y: centerY)
        }
        set(newCenter) {
            origin.x = newCenter.x - (size.width / 2)
            origin.y = newCenter.y - (size.height / 2)
        }
        /*
        set {
            origin.x = newValue.x - (size.width / 2)
            origin.y = newValue.y - (size.height / 2)
        }
        */
    }
}
var square = Rect(origin: Point(x: 0.0, y: 0.0), size: Size(width: 10.0, height: 10.0))
let initialSquareCenter = square.center
square.center = Point(x: 15.0, y: 15.0)
print("square.origin is now at (\(square.origin.x), \(square.origin.y))")
// 输出 "square.origin is now at (10.0, 10.0)



//只读计算属性
struct Cuboid {
    var width = 0.0, height = 0.0, depth = 0.0
    
    //只读计算属性的声明可以去掉get关键字和花括号
    var volume: Double {
        return width * height * depth
    }
}
let fourByFiveByTwo = Cuboid(width: 4.0, height: 5.0, depth: 2.0)
print("the volume of fourByFiveByTwo is \(fourByFiveByTwo.volume)")
// 输出 "the volume of fourByFiveByTwo is 40.0




//属性监视器
//属性监视器监控和响应属性值的变化,每次属性被设置值的时候都会调用属性监视器,甚至新的值和现在的值相同的时候也不例外
//可以为除了延迟存储属性之外的其他存储属性添加属性监视器,也可以通过重载属性的方式为继承的属性(包括存储属性和计算属性)添加属性监视器
class StepCounter {
    var totalSteps: Int = 0 {
        willSet(newTotalSteps) {
            print("About to set totalSteps to \(newTotalSteps)")
        }
        didSet {
            if totalSteps > oldValue  {
                print("Added \(totalSteps - oldValue) steps")
            }
        }
    }
}
let stepCounter = StepCounter()
stepCounter.totalSteps = 200
// About to set totalSteps to 200
// Added 200 steps
stepCounter.totalSteps = 360
// About to set totalSteps to 360
// Added 160 steps
stepCounter.totalSteps = 896
// About to set totalSteps to 896
// Added 536 steps

版权声明:本文为博主原创文章,未经博主允许不得转载。

Swift - 路径问题和NSFileManage文件管理

override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after l...

Swift 如何嵌入OC文件以及Cocoapods管理的swift项目导入OC第三方库

桥接头文件主要应用于swift和oc的混编。这里有两种创建方式。 方法一: 适用于项目(swift项目)之前没创建过oc的类,或(oc的项目)swif的类 这里以swift项目为例 既然没用过...

juno-swift 安装文件

  • 2015年11月12日 19:06
  • 3.14MB
  • 下载

swift代码文件03

  • 2016年05月12日 15:22
  • 20.37MB
  • 下载

Swift 包管理器教程

原文:An Introduction to the Swift Package Manager 作者: Mikael Konutgan 译者:kmyhy Swift 包管理器的正式发布是随...
  • kmyhy
  • kmyhy
  • 2017年05月05日 09:00
  • 2824

swift代码文件04

  • 2016年05月12日 15:23
  • 59.91MB
  • 下载

swift代码文件02

  • 2016年05月12日 15:21
  • 22.71MB
  • 下载

在xcode 6.4 中使用swift和object-c混合编程,同时通过cocoapods进行管理的一些问题和解决办法

使用cocoapods 中的use_frameworks! 产生.h文件无法发现的问题 因为使用到SwiftyJSON这个第三方库来进行json的解析,并且版本是2.2.1。需要在PodFile里...

Swift基礎教學文件

  • 2015年06月23日 11:25
  • 5.62MB
  • 下载

swift代码文件

  • 2016年05月12日 15:19
  • 30.84MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Swift之文件管理
举报原因:
原因补充:

(最多只允许输入30个字)