Video: Tìm hiểu Nil, biến Optional và phân biệt ?, ! trong Swift 2025
Trong Swift, các biến sao lưu được khai báo rõ ràng nếu cần thiết thường là trong mã chuyển đổi từ Mục tiêu-C). Ngoài ra, getters không cần sử dụng từ khóa get. Thuộc tính Swift có thể là các biến hoặc hằng số; mỗi loại có thể được lưu trữ hoặc tính như sau:
-
Khai báo một thuộc tính biến: Một biến được đưa ra với từ khóa var như trong:
var _fetchedResultsController: NSFetchedResultsController? = nil
-
Khai báo một thuộc tính không đổi: Hằng số (tức là một thuộc tính không thể sửa đổi) được giới thiệu với từ khoá let. Tờ khai trước có thể được thay đổi để khai báo một hằng như sau:
cho phép _fetchedResultsController: NSFetchedResultsController? = Khai báo một thuộc tính được lưu trữ:
-
Tuyên bố của _fetchedResultsController thể hiện trong danh sách dưới đây là khai báo điển hình của thuộc tính lưu . Một thuộc tính được lưu giữ là một thuộc tính được lưu giữ như là một phần của một thể hiện của lớp, điều tra, hay cấu trúc. // MARK: - Tìm nạp bộ điều khiển kết quả var fetchedResultsController: NSFetchedResultsController {if _fetchedResultsController! = nil {return _fetchedResultsController!} cho fetchRequest = NSFetchRequest () // Chỉnh sửa tên thực thể nếu thích hợp. hãy để thực thể = NSEntityDescription. entityForName ("Sự kiện", inManagedObjectContext: tự. managedObjectContext!) fetchRequest. entity = entity // Đặt kích thước lô thành một số phù hợp. fetchRequest. fetchBatchSize = 20 / Chỉnh sửa các phím sắp xếp theo ý thích. let sortDescriptor = NSSortDescriptor (key: "timeStamp", tăng dần: false) để cho phân loạiDescriptors = [sortDescriptor] fetchRequest. sortDescriptors = [sortDescriptor] // Chỉnh sửa đường dẫn khóa tên phần và tên bộ nhớ cache nếu thích hợp. / / nil cho phần tên con đường chính có nghĩa là "không có phần". cho phép aFetchedResultsController = NSFetchedResultsController (fetchRequest: fetchRequest, managedObjectContext: self. managedObjectContext!, sectionNameKeyPath: nil, cacheName: "Master") aFetchedResultsController. delegate = self _fetchedResultsController = aFetchedResultsController var lỗi: NSError? = không nếu! _fetchedResultsController!. performFetch (& error) {// Thay thế việc thực hiện bằng mã để xử lý // lỗi đúng cách. / / abort () gây ra các ứng dụng để tạo ra một đăng nhập / đăng nhập và chấm dứt. Bạn không nên sử dụng // chức năng này trong một ứng dụng vận chuyển, mặc dù nó / / có thể hữu ích trong quá trình phát triển. println ("Unresolved error (error), (error. userInfo)") abort ()} return _fetchedResultsController!} var _fetchedResultsController: NSFetchedResultsController?= nilBy mặc định, biến được truyền vào setter được đặt tên newValue,
và Swift sử dụng kiểu thích hợp cho nó.
Ví dụ sử dụng mô hình Mục tiêu-C cho một biến sao lưu: Thuộc tính Swift được lưu trữ không bắt đầu với một ký tự đặc biệt như một gạch dưới; tuy nhiên, chúng cần phải được khởi tạo và đưa ra một loại (có thể suy ra từ việc khởi tạo) trước khi chúng được sử dụng.
Khai báo một thuộc tính đã được tính với một getter và một setter:
-
Điểm này đáng được giải thích một chút. Danh sách hiển thị một trình getter cơ bản và setter của thuộc tính Swift. Bạn có thể thấy rằng myVar có một biến sao lưu của myInt. Các từ khóa get and set xác định getter và setter. var myInt: Int = 0 var myVar: Int {get {return myInt} set {myInt = newValue}} myVar = 20
Đây là cách bạn tạo
tài sản tính .
var detailItem: AnyObject? {didSet {// Cập nhật chế độ xem. tự. configureView ()}} Đặt một breakpoint trong phương pháp này và chạy ứng dụng trong Trình mô phỏng iOS. Nút gây ra phương thức được gọi.
Đây là nơi tốt để gọi trình xem cập nhật (chính xác những gì được thực hiện trong mẫu). Có hai nhà quan sát bạn có thể sử dụng:
didSet: Đây được gọi là sau khi thực tế.
-
willSet: Đây được gọi là ngay trước khi thiết lập xảy ra.