ios - 从 NSSet 获取对象并填充 TableView

标签 ios uitableview core-data

我有这段代码如下所示

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)
                itemsOnListSet = list.contains!

它所做的是使用两个实体之间的 .contains 关系从指定的列表中获取项目,并将所有项目保存到 NSSet 中。

我想做的是用 NSSet 中的对象填充 TableView。

是否有与 NSSet 相关的函数允许我从集合中获取项目?或者我应该将项目保存在数组而不是 NSSet 中。

附言.contains 关系是 NSSet 类型

    @NSManaged public var contains: NSSet?

最佳答案

为什么不使用 Set 转换为 Array,

if let _ = list.contains {
    let itemsOnListArray = list.contains!.allObjects 
}

否则

if let unwrappedList = list.contains {
        let itemsOnListArray = unwrappedList.allObjects 
}

现在使用 itemsOnListArray 作为 tableView 的数据源:)

编辑:

你的代码

let item = itemsOnListArray[indexPath.row] 
cell.textLabel?.text = item as? String

假设 itemsOnListArray 是一个字符串数组!!!这是绝对不可能的,因为 list.contains! 是一组 NSManagedObjects,或者如果您创建了 ManagedObjects 的映射子类,那么它将包含一组您的托管对象,如项目。

你应该做的是(因为你没有提供项目的描述,我假设项目中有一个名称属性)

let item = itemsOnListArray[indexPath.row] as! Item
cell.textLabel?.text = item.name

关于ios - 从 NSSet 获取对象并填充 TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41544403/

相关文章:

objective-c - 使用 LLVM GCC 4.2 不会让我将 CFStringRef 桥接到 NSString

iphone - 删除 UITableViewCell 和该单元格的所有数据

ios - NSPredicate 获取核心数据

ios - 为什么我向下滚动时看到的单元格多于 numberOfRowInSection 的重新运行值?

ios - 使用 scrollViewDidScroll 移动 ChildViewController 的 subview

iphone - 我的 xcmappingmodel 中的自定义策略将不会执行

ios - 核心数据更改是否反射(reflect)在本地 NSManagedObject 子类变量中?

ios - 在 iTunes Connect 中重复使用应用程序名称会出现验证错误

ios - 如何在 iOS swift 中对多个按钮使用相同的 segue?

ios - 核心数据版本控制