【发布时间】:2016-12-21 07:25:46
【问题描述】:
所以我正在使用 CoreData 构建这个应用程序。
我拥有的两个实体是列表和项目。它们有一对多的关系,即一个列表可以有多个项目。
例如:List1 有 Items: item1, item2
我已经编写了将项目存储在特定列表中的代码,但我很难弄清楚如何从特定列表中获取和处理项目。
到目前为止我所做的如下
func getItemsOnList(){
let app = UIApplication.shared.delegate as! AppDelegate
let context = app.persistentContainer.viewContext
//fetchRequest to get the List
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "List")
let predicate = NSPredicate(format: "title == %@", listName)
fetchRequest.returnsObjectsAsFaults = false
fetchRequest.predicate = predicate
if let fetchResults = try? context.fetch(fetchRequest){
if fetchResults.count > 0 {
for listEntity in fetchResults {
let list = listEntity as! List
print(list.title as Any)
itemsOnList = list.contains!
print(itemsOnList)
print("The list with name:\(list.title)has \(itemsOnList.count) items")
}
}
}
}
此函数返回一个 NSSet,它假定包含该特定列表中的所有项目。
我的数据模型是:
我的问题是:
A.我编写 getItemsOnList() 函数的方式是否正确?还是我做错了什么。
B.鉴于代码是正确的,并且我得到的 NSSet 对所有项目都是正确的,我将如何获取该 NSSet 中的每个项目以便将其放在 TableView 上。
【问题讨论】:
-
您可以使用MagicalRecord轻松处理核心数据任务。获取项目后,您有一个 Items 数组。您可以将此数组用作表格视图的数据源。除此之外,您可以creating a Fetched Results Controller 随时填充和更新表格视图。
标签: ios swift core-data nspredicate nsset