Ant*_*o K 2 core-data ios swift3
我已经看到了一些方法,但没有任何方法可以解决我的问题。
我创建了两个实体,商店和文章。Shop有“物品”和“店铺”的关系,都是多对多的有序关系。
对于商店,我有一个 CollectionViewController 和一个文章 TableViewController。选择一家商店后,我通过 segue 将其发送到 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)")
}
}
Run Code Online (Sandbox Code Playgroud)
如果我构建并运行并选择一家商店,该应用程序将因以下原因终止: “NSInvalidArgumentException”,原因:“此处不允许使用多个密钥”
我认为问题在于谓词,因为如果我将其注释掉并再次运行,然后选择商店它工作正常,但是所有商店都有我添加的相同文章。
如何仅获取所选商店的文章?
尝试
NSPredicate(format: "ANY shop = %@", currentShop!)
Run Code Online (Sandbox Code Playgroud)
或者,您可以只使用currentShop.articles? 这将返回 a Set,在这种情况下可能不适合您的目的,但是...通常您可以只关注关系。
| 归档时间: |
|
| 查看次数: |
1260 次 |
| 最近记录: |