视频: Introduction to iOS, by Rhed Shi 2024
在Swift中,如果需要,通常在从Objective-C转换的代码中)。另外,getter不需要使用get关键字。 Swift属性可以是变量或常量;每个类型可以被存储或计算,如下所示:
-
声明一个变量属性: 一个变量与关键字var一起引入:
var _fetchedResultsController:NSFetchedResultsController? = nil
-
声明一个常量属性: 引入一个常量(即不能被修改的属性)和关键字let。前面的声明可以改为声明一个常量,如下所示:
<! - 1 - >let _fetchedResultsController:NSFetchedResultsController? = nil
-
声明存储的属性: 下面列表中显示的_fetchedResultsController声明是 存储属性 的典型声明。存储的属性是作为类,枚举或结构实例的一部分存储的属性。
// MARK: - 获取结果控制器var fetchedResultsController:NSFetchedResultsController {if _fetchedResultsController! = nil {return _fetchedResultsController!} let fetchRequest = NSFetchRequest()//根据需要编辑实体名称。让实体= NSEntityDescription。 entityForName(“Event”,inManagedObjectContext:self。managedObjectContext!)fetchRequest。 entity = entity //将批量大小设置为合适的数字。 fetchRequest。 fetchBatchSize = 20 //根据需要编辑排序关键字。让sortDescriptor = NSSortDescriptor(key:“timeStamp”,升序:false)让sortDescriptors = [sortDescriptor] fetchRequest。 sortDescriptors = [sortDescriptor] //编辑段名称关键路径和缓存名称(如果适用)。 //节名称键路径为零,表示“无节”。让aFetchedResultsController = NSFetchedResultsController(fetchRequest:fetchRequest,managedObjectContext:self。managedObjectContext!,sectionNameKeyPath:nil,cacheName:“Master”)aFetchedResultsController。委托=自_fetchedResultsController = aFetchedResultsController var错误:NSError? =如果! _fetchedResultsController! 。 performFetch(&错误){/ /替换这个实现与代码来处理/ /适当的错误。 // abort()导致应用程序生成一个//崩溃日志并终止。你不应该在运输应用中使用这个//函数,尽管//在开发过程中可能是有用的。 println(“未解决的错误(错误),(错误。用户信息)”)abort()}返回_fetchedResultsController!} var _fetchedResultsController:NSFetchedResultsController?= nilBy默认情况下,传递给setter的变量名为newValue,
,Swift使用适当的类型。
这个例子使用一个Objective-C模式作为支持变量:Swift存储的属性不需要以特殊字符(如下划线)开头;然而,它们确实需要被初始化,并在使用之前给出一个类型(可能是从初始化中推断出来的)。
var _fetchedResultsController:NSFetchedResultsController? = nil
-
用getter和setter声明一个计算属性: 这一点值得一点澄清。清单显示了一个Swift属性的基本getter和setter。你可以看到myVar有一个myInt的后备变量。 get和set关键字标识getter和setter。
var myInt:Int = 0 var myVar:Int {get {return myInt} set {myInt = newValue}} myVar = 20
这是您创建 计算属性 的方式。
<! - 3 - >
除了下图所示的获取者和设置者外,还可以使用下一个列表中显示的观察者。这个代码在DetailViewController中。 Locatapp的快速文件(来自主从应用程序模板)。
var detailItem:AnyObject? {didSet {//更新视图。自。 configureView()}}在这个方法中设置一个断点,并在iOS模拟器中运行应用程序。该按钮导致该方法被调用。
这是调用视图更新程序的好地方(这正是模板中所做的)。有两个观察者可以使用:
-
didSet:在事实之后调用。
-
willSet:在设置发生之前调用。