Рішення для автоматизованих класів
від генератора коду Xcode (ios 10 і вище)
Якщо ви створите сутність під назвою "YourClass", Xcode автоматично вибере "Визначення класу" як типовий тип кодена у "Інспектор моделі даних". це створить класи нижче:
Швидка версія:
// YourClass+CoreDataClass.swift
@objc(YourClass)
public class YourClass: NSManagedObject {
}
Версія Objective-C:
// YourClass+CoreDataClass.h
@interface YourClass : NSManagedObject
@end
#import "YourClass+CoreDataProperties.h"
// YourClass+CoreDataClass.m
#import "YourClass+CoreDataClass.h"
@implementation YourClass
@end
Ми виберемо "Категорія / Розширення" з параметра Codegen замість "Визначення класу" в Xcode.
Тепер, якщо ми хочемо додати перерахунок, перейдіть і створіть ще одне розширення для вашого автоматично сформованого класу та додайте тут свої визначення переліків, як нижче:
// 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
Тепер ви можете створити спеціальні аксесуари, якщо ви хочете обмежити значення перерахунком. Перевірте прийняту відповідь від власника запитання . Або ви можете конвертувати ваші перерахунки, встановлюючи їх явно методом перетворення, використовуючи оператор лиття, як показано нижче:
model.yourEnumProperty = (int16_t)YourEnumTypeStarted;
Також перевірте
Автоматичне генерування підкласу Xcode
Тепер Xcode підтримує автоматичну генерацію підкласів NSManagedObject в інструменті моделювання. У суб'єктному інспекторі:
Посібник / Нічого - це типова та попередня поведінка; у цьому випадку слід реалізувати власний підклас або використовувати NSManagedObject. Категорія / Розширення генерує розширення класу у файлі з назвою ClassName + CoreDataGeneratedProperties. Вам потрібно оголосити / реалізувати основний клас (якщо в Obj-C через заголовок розширення може імпортувати назву ClassName.h). Визначення класу генерує файли підкласу, названі як ClassName + CoreDataClass, а також файли, згенеровані для категорії / розширення. Згенеровані файли розміщуються в DerivedData та відновлюються під час першої збірки після збереження моделі. Вони також індексуються Xcode, тому команда клацання посилання та швидке відкриття за назвою файлу працює.
enum
s?