2016-08-23 5 views
-2

CoreDataを使用する際に問題があります。関係が新しいエンティティを追加中にCoreDataがクラッシュする

私は次のモデルがあります:私は本を追加しようとするとき、私はそのを設定しています1つのライブラリに

を関係で予約:

エンティティ:多くの書籍 エンティティに関係してライブラリをライブラリとの関係で、アプリケーションがクラッシュします。

import UIKit 
import CoreData 

class ViewController: UIViewController { 

var library: Library! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    addCheckIt("", author: "") 
} 

func addCheckIt(title: String, author: String) { 
    let context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext 
    let bookDescription = NSEntityDescription.entityForName("Book", inManagedObjectContext: context) 
    let myBook = Book(entity: bookDescription!, insertIntoManagedObjectContext: context) 

    myBook.title = title 
    myBook.author = author 

    myBook.library = library 

    do { 
     try context.save() 
    } catch let err as NSError { 
     print(err.debugDescription) 
    } 
} 

} 

myBook.library = libraryでクラッシュします。次に、このエラーが発生します:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSSet intersectsSet:]: set argument is not an NSSet'

私は何時間も検索しましたが解決策が見つからないので、助けてください。

extension Library { 

    @NSManaged var name: String? 
    @NSManaged var books: NSSet? 

} 

extension Book { 

    @NSManaged var author: String? 
    @NSManaged var title: String? 
    @NSManaged var library: Library? 

} 
+0

パブロ、この質問を再投稿し、スクリーンショットを適切に再アップロードすることをお勧めします。 –

+0

'ライブラリ'は多対1の関係であり、多対1の関係や多対多の関係ではないと確信していますか? –

+0

関係を設定した後でアプリケーションを削除し、クリーンアップしてからプロジェクトをビルドします。 – Himanshu

答えて

1

1対多の関係にはNSOrderedSetを使用することをお勧めします(まだ行っていない場合)。あなたBookクラスはxcdatamodeldブックライブラリ

class Book{ 
    @NSManaged var library: Library 
    ... 
} 

でなければなりません

class Library{ 
    @NSManaged var books: NSOrderedSet 
    ... 
} 

モデル間の関係の名前でなければなりません。 別のこととして、関係はあなたの場合には逆でなければなりません。 最後に、私はあなたが設定することをお勧め:

library.books.addObject(book)

いますが、代わりにNSOrderedSet

UPDATE

NSMutableOrderedSetを使用する必要があり、これはBookオブジェクトを作成してみないために以下に説明するように:

let book: Book = NSManagedObject(entity: bookDescription, insertIntoManagedObjectContext: context) as! Book 
+0

ありがとう、私は変更してあなたが示唆したように順序を設定しましたが、私はまだエラーが発生します – ppablo

+0

私は私の答えを編集しました – ciccioska

+0

もう一度お世話になりました、私はすぐにこれを試してみます – ppablo

関連する問題