SwiftでCoreDataを扱う場合でも、Entityに対応したクラスを定義することに変わりはない。
import CoreData
// このクラスはObjective-C側から読み込まれるため、@objcをつける。
// ref. https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html
@objc(ToDo)
class ToDo: NSManagedObject {
@NSManaged var title: NSString
@NSManaged var created: NSDate
@NSManaged var modified: NSDate
@NSManaged var repeat: NSNumber
}
ただ、この時に注意しなければいけないのが変数の型。
以下のように定義した場合、Stringは問題ないが、Intは0以外の値を保存しようとすると例外終了する。(現状、根本原因は分からず)
import CoreData
@objc(ToDo)
class ToDo: NSManagedObject {
@NSManaged var title: String
@NSManaged var created: NSDate
@NSManaged var modified: NSDate
@NSManaged var repeat: Int
}
Objective-Cから扱われるクラスは型もObjective-C側に寄せた方が安全かも?