我看到已經有一些方法,但沒有什麼能夠解決我的問題。'NSInvalidArgumentException',原因:'對多密鑰不允許在這裏'
我創建了兩個實體,Shop和Article。商店有關係「文章」和文章「商店」,都是很多很多和有序的關係。
對於店我有一個CollectionViewController和文章TableViewController。選擇一個商店後,我通過segue將其發送到ArticleTableViewController,在那裏我可以將文章添加到當前商店。
ArticleTableViewController
var articles: [Article] = []
var currentShop: Shop?
@IBAction func pressAddButton(_ sender: UIButton) {
let article = Article(context: managedContext!)
article.name = "Milk"
currentShop?.addToArticles(article)
saveManagedContext()
tableView.reloadData()
}
func loadArticles() {
let articleFetchRequest: NSFetchRequest<Article> = Article.fetchRequest()
articleFetchRequest.predicate = NSPredicate(format: "shop = %@", currentShop!)
do {
articles = try managedContext.fetch(articleFetchRequest)
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
}
func saveManagedContext() {
do {
try managedContext?.save()
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}
}
如果我建立和運行,並選擇一個店,用的理由終止應用程序: 「NSInvalidArgumentException」的,理由是:「一對多這裏不允許鍵」
我認爲問題在於謂詞,因爲如果我將其註釋掉並再次運行,然後選擇它的工作正常,但所有商店都有我添加的相同文章。
如何提取所選商店的商品?
你的謂詞需要更多沿着店鋪關係包含currentShop。 – sschale
什麼是謂詞,一些具體的例子? –