我在使用CoreData时遇到问题 .
我有以下型号:
实体:与许多图书实体有关系的图书馆:与一个图书馆有关系的图书
我正在尝试添加一本书,当我设置它与库的关系时,应用程序崩溃了 .
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 =库崩溃了 . 然后我收到这个错误:
由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'*** - [NSSet intersectsSet:]:set参数不是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?
}
1 回答
我建议你使用
NSOrderedSet
作为一对多的关系 . (如果你没有这样做) .你的书课应该是
其中 books 和 library 中的 books 应该是模型之间关系的名称 . 另一件事,在你的情况下,关系必须相反 . 最后我建议你设置:
library.books.addObject(book)
但要做到这一点,你需要使用 NSMutableOrderedSet 而不是 NSOrderedSet
UPDATE
尝试按如下所述创建Book对象: