Solusi untuk Kelas yang Dibuat Otomatis
dari Generator Kode Xcode (ios 10 dan lebih tinggi)
Jika Anda membuat Entitas dengan nama "KelasAnda", Xcode secara otomatis akan memilih "Definisi Kelas" sebagai default jenis Codegen di "Inspektur Model Data". ini akan menghasilkan kelas-kelas di bawah ini:
Versi Swift:
// YourClass+CoreDataClass.swift
@objc(YourClass)
public class YourClass: NSManagedObject {
}
Versi Objective-C:
// YourClass+CoreDataClass.h
@interface YourClass : NSManagedObject
@end
#import "YourClass+CoreDataProperties.h"
// YourClass+CoreDataClass.m
#import "YourClass+CoreDataClass.h"
@implementation YourClass
@end
Kami akan memilih "Kategori / Ekstensi" dari opsi Codegen daripada "Definisi Kelas" di Xcode.
Sekarang, Jika kita ingin menambahkan enum, buka dan buat ekstensi lain untuk kelas yang dibuat secara otomatis, dan tambahkan definisi enum Anda di sini seperti di bawah ini:
// 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
Sekarang, Anda dapat membuat pengakses kustom jika Anda ingin membatasi nilai ke enum. Silakan periksa jawaban yang diterima oleh pemilik pertanyaan . Atau Anda dapat mengonversi enum Anda saat Anda mengaturnya dengan metode konversi eksplisit menggunakan operator cast seperti di bawah ini:
model.yourEnumProperty = (int16_t)YourEnumTypeStarted;
Periksa juga
Pembuatan subclass otomatis Xcode
Xcode sekarang mendukung pembuatan subkelas NSManagedObject secara otomatis dalam alat pemodelan. Di inspektur entitas:
Manual / Tidak Ada adalah default, dan perilaku sebelumnya; dalam hal ini, Anda harus mengimplementasikan subclass Anda sendiri atau menggunakan NSManagedObject. Kategori / Ekstensi menghasilkan ekstensi kelas dalam file bernama seperti ClassName + CoreDataGeneratedProperties. Anda perlu mendeklarasikan / mengimplementasikan kelas utama (jika di Obj-C, melalui header ekstensi dapat mengimpor bernama ClassName.h). Definisi Kelas menghasilkan file subkelas bernama seperti ClassName + CoreDataClass serta file yang dihasilkan untuk Kategori / Ekstensi. File yang dihasilkan ditempatkan di DerivedData dan dibangun kembali pada build pertama setelah model disimpan. Mereka juga diindeks oleh Xcode, jadi klik perintah pada referensi dan buka cepat dengan nama file berfungsi.
enum
s?