Giải pháp cho các lớp học được tạo tự động
từ Trình tạo mã của Xcode (ios 10 trở lên)
Nếu bạn tạo một Thực thể có tên là "YourClass", Xcode sẽ tự động chọn "Định nghĩa lớp" làm loại Codegen mặc định tại "Data Model Inspector". điều này sẽ tạo ra các lớp bên dưới:
Phiên bản Swift:
// YourClass+CoreDataClass.swift
@objc(YourClass)
public class YourClass: NSManagedObject {
}
Phiên bản Objective-C:
// YourClass+CoreDataClass.h
@interface YourClass : NSManagedObject
@end
#import "YourClass+CoreDataProperties.h"
// YourClass+CoreDataClass.m
#import "YourClass+CoreDataClass.h"
@implementation YourClass
@end
Chúng tôi sẽ chọn "Danh mục / Phần mở rộng" từ tùy chọn Codegen thay vì "Định nghĩa Lớp" trong Xcode.
Bây giờ, nếu chúng ta muốn thêm một enum, hãy tạo một phần mở rộng khác cho lớp được tạo tự động của bạn và thêm các định nghĩa enum của bạn tại đây như bên dưới:
// YourClass+Extension.h
#import "YourClass+CoreDataClass.h" // That was the trick for me!
@interface YourClass (Extension)
@end
// YourClass+Extension.m
#import "YourClass+Extension.h"
@implementation YourClass (Extension)
typedef NS_ENUM(int16_t, YourEnumType) {
YourEnumTypeStarted,
YourEnumTypeDone,
YourEnumTypePaused,
YourEnumTypeInternetConnectionError,
YourEnumTypeFailed
};
@end
Bây giờ, bạn có thể tạo các trình truy cập tùy chỉnh nếu bạn muốn giới hạn các giá trị trong một enum. Vui lòng kiểm tra câu trả lời được chấp nhận bởi chủ sở hữu câu hỏi . Hoặc bạn có thể chuyển đổi enum của mình trong khi bạn đặt chúng bằng phương pháp chuyển đổi rõ ràng bằng cách sử dụng toán tử truyền như dưới đây:
model.yourEnumProperty = (int16_t)YourEnumTypeStarted;
Cũng kiểm tra
Tạo lớp con tự động Xcode
Xcode hiện hỗ trợ tạo tự động các lớp con NSManagedObject trong công cụ mô hình hóa. Trong thanh tra thực thể:
Thủ công / Không là hành vi mặc định và trước đó; trong trường hợp này, bạn nên triển khai lớp con của riêng mình hoặc sử dụng NSManagedObject. Category / Extension tạo một phần mở rộng lớp trong một tệp có tên như ClassName + CoreDataGeneratedProperties. Bạn cần khai báo / triển khai lớp chính (nếu trong Obj-C, thông qua tiêu đề, phần mở rộng có thể nhập có tên ClassName.h). Định nghĩa lớp tạo ra các tệp lớp con có tên như ClassName + CoreDataClass cũng như các tệp được tạo cho Danh mục / Phần mở rộng. Các tệp đã tạo được đặt trong DerivedData và được tạo lại trên bản dựng đầu tiên sau khi mô hình được lưu. Chúng cũng được lập chỉ mục bởi Xcode, vì vậy việc nhấp chuột vào các tài liệu tham khảo và mở nhanh theo tên tệp sẽ hoạt động.
enum
s?