如何迅速将核心数据管理对象数组转换为“可识别”列表?(Xcode 11,Beta 5)

格雷格

如何将使用Swift / IOS通过“ fetchRequest”从“核心数据”中检索到的管理对象数组转移到“可识别”数组中?

示例-如何使“任务”数组“可识别”

let fetchRequest : NSFetchRequest<Todo> = Todo.fetchRequest()
let tasks = try context?.fetch(fetchRequest)

背景:

  • 在使用“列表”的SwiftUI中,传递给列表的数据数组必须“可识别”。
  • 我还注意到,标识(通过:.self)似乎已被弃用。
  • 使用(Xcode 11,Beta 5)
  • 当前使用xcode为核心数据实体自动创建托管对象,因此坚持使用此方法会很好
法比安

使用替换 ForEach(Data, id: \.idAttribute)

该功能identified(by: .self)已被新语法替换:

ForEach(filteredGrapes, id: \.id) { grape in
    GrapeCell(grape: grape)
}

Coredata示例:

使用名称为的文件ItemStore.xcdatamodeld,该文件的实体ItemDAO定义为Generation=Class Definitionenabled,并且具有名为的字符串属性title

注意:必须先Product/Clear Build Folder重启Xcode才能使Xcode11Beta5找到正确的密钥路径,这似乎是Xcode11Beta5中的错误。

import Foundation
import SwiftUI
import CoreData

class MyItemStore {
    public static func defaultItems() -> [ItemDAO]{
        let store = NSPersistentContainer(name: "ItemStore")
        store.loadPersistentStores { (desc, err) in
            if let err = err {
                fatalError("core data error: \(err)")
            }
        }
        let context = store.viewContext
        let item = ItemDAO(context: context)
        item.title = "hello you"
        try! context.save()
        return [
            item,
            item,
        ]
    }
}

struct CoreDataView: View {
    let items: [ItemDAO] = MyItemStore.defaultItems()

    var body: some View {
        VStack{
            ForEach(items, id: \.title) { (item: ItemDAO) in
                Text(item.title ?? "no title")
            }
            Text("hi")
        }
    }
}

通过扩展添加可识别

extension Todo: Identifiable {
    public var id: String {
        //return self.objectID.uriRepresentation().absoluteString
        return self.title!
    }
}

手动维护CoreData模型以添加 Identifiable

您可以Identifiable像往常一样在此添加,尽管扩展也可以添加Identifiable,但这不是必需的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Xcode 11 beta 6背后的Xcode 11 beta 7下载链接?

Xcode 11 beta swift ui preview not showing

无法在此文件中预览-[App Name] .app可能在Xcode 11 Beta 5上崩溃了

Swift 5(Xcode 11 Beta 5&6)-如何写入JSON文件?

我可以下载Xcode 11 beta 5的iOS 13 beta 6模拟器吗?

Swift:XCode6 Beta 5在AppDelegate中的核心数据对象上给出了错误

iOS 11 Beta 2 / Xcode Beta 3 AutoLayout问题

INVoiceShortcutCenter.shared.setShortcutSuggestions(suggestions)在iOS 13 Beta中崩溃。Xcode 11 Beta

Xcode 11 beta 3上UIAction的语法

Xcode 11 Beta 4存档快速错误

在SwiftUI Xcode 11 Beta 4中使用可绑定对象保存数据

Xcode 11 Beta 5-加载插件失败

.send()和.sink()对于Xcode 11 Beta 5中的PassthroughSubject似乎不再起作用

Xcode 11 beta 5中止陷阱:在@Published变量上调用接收器时发生6错误

Xcode 11 Beta 5更新无差别地破坏了我的项目

数组大小更改后如何刷新ForEach显示元素的数量(SwiftUI,Xcode 11 Beta 5)

在xcode 11 beta5和swiftui上进行深层链接

Xcode 11 Beta 5中的API更改后,如何在SwiftUI中为TextField使用RoundedBorderTextFieldStyle?

SwiftUI / CoreData /母版/明细(带有编辑)/ Xcode 11-Beta 5

在Xcode 11 Beta 5中使用ForEach时为什么会出错?

如何打开.plist文件作为源代码xcode 11 beta 5

在Xcode11 beta 4中有效但在beta 5中停止工作的代码出现问题

升级到iOS13 beta 6 / Xcode 11 beta 5后:发出“ dyld:未找到符号:_ $ s7SwiftUI7BindingVyxGAA0C11ConvertibleAAMc”

SwiftUI dyld:找不到符号:_ $ s7SwiftUI7BindingVyxGAA0C11ConvertibleAAMc Xcode 11 beta 5

解决Xcode 11 beta 5中的SwiftUI Path崩溃

Xcode 8 beta 5:操作无法完成

Xcode 11 Beta 4 TabbedView 绑定问题

Xcode 11 Beta 5 - 模态仅触发一次

Xcode 11 beta 5:“不推荐使用‘下标(_:)’:有关迁移路径,请参阅发行说明。”