2017-08-23 17 views
0

スウィフト& Xcode8とコアデータを使用している場合、私は以下のモデルを生成し、私はそれが使用するために本当に難しいと感じ:どのようにエレガントな使用CoreData Swift3 +オプション+ NSOrderedSet +ジェネリックと

  1. chapter関係別のモデル、およびそれのタイプは、私は実際に私が生成されたアクセサでコレクションを変更する必要がNSOrderedSet
  2. NSOrderedSet<Chapter>?ように、一般的な使用することはできませんNSOrderedSet
  3. に生成された、それは迷惑なんだ
  4. コアデータによって生成されるすべての属性はオプションです。モデルは深くネストされていますが、ガードをたくさん使用する必要がありますか?オプションの値に

を解凍し、私はどのようにあなたたちは一緒スウィフトとコアデータで遊ぶことを疑う...

する:(

私の代わりに?

をレルムを使用してみてくださいCourseDetail.swift

extension CourseDetail { 
    @NSManaged public var title: String? 
    @NSManaged public var chapter: NSOrderedSet? 
    @NSManaged public var author: NSOrderedSet? 
} 

// MARK: Generated accessors for chapter 
extension CourseDetail { 

    @objc(addChapterObject:) 
    @NSManaged public func addToChapter(_ value: Chapter) 

    @objc(removeChapterObject:) 
    @NSManaged public func removeFromChapter(_ value: Chapter) 

    @objc(addChapter:) 
    @NSManaged public func addToChapter(_ values: NSSet) 

    @objc(removeChapter:) 
    @NSManaged public func removeFromChapter(_ values: NSSet) 

} 

答えて

1

私は目を使用していない私の場合は必要な場合を除いてオプションを使用せずに自分で作成します。生成されたクラスを使用する必要はありません。

生成されたアクセサでも手書きでも、簡単なKey-Value Coding命名規則に従います。

@objc(CourseDetail) 
public final class CourseDetail: NSManagedObject { // The actual class, no longer an extension. 
    @NSManaged public var title: String 
    @NSManaged public var chapter: NSSet 
    @NSManaged public var author: NSSet 

    // A convenience for fetch requests 
    @nonobjc public class func fetchRequest() -> NSFetchRequest<CourseDetail> { 
     return NSFetchRequest<CourseDetail>(entityName: "CourseDetail"); 
    } 

    @objc(addChapterObject:) 
    @NSManaged public func addToChapter(_ value: Chapter) 

    @objc(removeChapterObject:) 
    @NSManaged public func removeFromChapter(_ value: Chapter) 

    @objc(addChapter:) 
    @NSManaged public func addToChapter(_ values: NSSet) 

    @objc(removeChapter:) 
    @NSManaged public func removeFromChapter(_ values: NSSet) 

} 
:私はクラスを書いていた場合

それは次のようになります

関連する問題