Video: [1001 Tweak]Call Recorder ghi âm cuộc gọi trên iPhone #28 2025
Active Record là một mẫu đơn giản, trong đó lớp của đối tượng mô hình bộ nhớ được mở rộng với các phương pháp xử lý sự bền bỉ của lớp. Dưới đây là một ví dụ sử dụng một bảng có tên PERSONTABLE để duy trì các đối tượng của một lớp Person trong một cơ sở dữ liệu quan hệ như là kho dữ liệu. Đây là tệp giao diện của lớp Person:
@interface Người: NSObject {// Các thuộc tính của mô hình @private NSString * Tên; @private NSString * SSNo;} - (id) init; - (id) initWithOIDNameAndSSNo: (NSString *) OID: (NSString *) aName: (NSString *) aSSNo; - (NSString *) getName; - (NSString *) getSSNo; - (void) setName: (NSString *) aName; - (void) setSsno: (NSString *) aSSNo; - (void) setAsRetired; // Thao tác khác, nếu có -d
Chỉ có các phương thức miền được hiển thị trong giao diện này. Các phương pháp bổ sung cần thiết cho tính bền bỉ được định nghĩa trong giao thức Persistable:
typedef enum {MỚI, TIỆN ÍCH, CHANGED, DELETED} STATE; @protocol Persistable // Các thuộc tính yêu cầu bởi giao thức @ yêu cầu @ tài sản (bản sao) NSString * OID; // ID duy nhất trong cơ sở dữ liệu @được yêu cầu @ tài sản (chỉ đọc) STATE state; + (id) findByOID: (NSString *) OID; - chèn chèn; - (void) cập nhật; - (void) xóa; - (void) tồn tại;
Thuộc tính
-
OID : Thuộc tính này chứa ID liên tục của đối tượng sẽ xác định duy nhất đối tượng trong một kho dữ liệu liên tục.
-
thuộc tính thuộc tính: Thuộc tính này cho biết đối tượng Mới được tạo ra trong bộ nhớ (trạng thái là MỚI).
-
Có trong cơ sở dữ liệu (trạng thái là T EX).
-
Được sửa đổi trong bộ nhớ sau khi tìm nạp từ kho dữ liệu (trạng thái CHANGED).
-
Được đánh dấu để xóa (trạng thái XÓA).
-
Giao thức sau đó khai báo một tập hợp các phương thức mà lớp cần thực hiện. Bạn sử dụng phương thức lớp FindByOid để đưa một đối tượng từ cơ sở dữ liệu vào bộ nhớ. (Các phương pháp này được gọi là
-
finder các phương pháp, và bạn có thể có nhiều loại khác nhau của chúng, chẳng hạn như findByName, findBySSNo, v.v.) Pseudo để thực hiện phương pháp này trong lớp Person được hiển thị ở đây:
Các biến này cùng với OID instantiate và khởi tạo một đối tượng của lớp Person và trả về nó.
-
Tiếp theo, bạn sẽ thấy việc triển khai các phương pháp khác từ giao thức Persistable, trong lớp Person. Phương thức persist được gọi là bất cứ khi nào đối tượng cần được lưu vào cơ sở dữ liệu, như được hiển thị ở đây:
- (void) persist {// Kiểm tra trạng thái của đối tượng // Nếu đó là một đối tượng mới i. e. state = Gọi NEW [tự chèn] / / để tạo một mục nhập trong PERSONTABLE // Nếu state = EXISTS không làm gì cả // Nếu state = CHANGED, hãy gọi update để cập nhật cơ sở dữ liệu // Nếu state - DELETED, hãy gọi delete để xóa thông tin // trong cơ sở dữ liệu} -
Phương thức tồn tại sử dụng biến trạng thái để gọi các phương thức đúng cho sự tồn tại của đối tượng.
- (void) insert {REPLACE INTO PERSONTABLE (OID, NAME, SSNO) GIÁ TRỊ: OID: Tên: SSNo …}
Nếu đối tượng được lấy từ cơ sở dữ liệu và sau đó được sửa đổi trong bộ nhớ, phương pháp cập nhật được gọi.
- (void) update {UPDATE TÊN GIÁ CÓ TÊN GIÁM SÁT =: Tên, SSNO =: SSNo WHERE OID =: OID …}-
Nếu đối tượng được lấy ra từ cơ sở dữ liệu và sau đó đánh dấu để xóa trong bộ nhớ, phương pháp được gọi là.
-
- (void) xóa {XÓA T FROM T FROM CH P TRÊN Ở ĐÂU OID =: OID; …}
Lưu ý rằng các phương pháp tên miền cũng như các phương pháp tìm nên thiết lập trạng thái của đối tượng một cách thích hợp. Kết quả là init đặt trạng thái của đối tượng là NEW, findByOID đặt trạng thái là EXISTING, setAsRetired có thể đặt trạng thái DELETED, setName, và setSSNo đặt trạng thái CHANGED (nếu trạng thái ban đầu là T EXNG), và như vậy trên.
-
Khi bạn sử dụng Active Record để chứa các đối tượng trong cơ sở dữ liệu quan hệ, nó thường ánh xạ một đối tượng vào một bảng cơ sở dữ liệu, với các biến liên tục của đối tượng được ánh xạ tới các trường trong bảng đó.
Tất cả các logic quản lý vòng đời của đối tượng - quyết định lấy nó từ cơ sở dữ liệu, cho dù cho phép trùng lặp trong bộ nhớ tương ứng với cùng một đối tượng trong cơ sở dữ liệu, khi nào lưu, khi nào xóa các đối tượng vĩnh viễn- trách nhiệm của ứng dụng.
