【问题标题】:is there a function combin NSSet and FetchResult<>有没有结合 NSSet 和 FetchResult<> 的函数
【发布时间】:2020-03-25 06:50:41
【问题描述】:

我在 Coredata 中编码,有两个实体(消息和关键字)具有一对多关系。 首先,我使用@Environment(.managedObjectContext) var moc 创建了三个关键字实例。 秒,我使用 @Environment(.managedObjectContext) var moc 创建了一个 Message 实例 第三,我想在消息中添加三个关键字但失败,消息中的关键字是NSSet, 消息是 FetchResults,它是如何工作的,Ths。

extension Message {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<Message> {
        return NSFetchRequest<Message>(entityName: "Message")
    }

    @NSManaged public var id: UUID?
    @NSManaged public var content: String?
    @NSManaged public var creatAt: Date?
    @NSManaged public var user: User?
    @NSManaged public var keywords: NSSet?
    @NSManaged public var photoes: NSSet?
}
extension Keyword {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<Keyword> {
        return NSFetchRequest<Keyword>(entityName: "Keyword")
    }

    @NSManaged public var id: UUID?
    @NSManaged public var title: String?
    @NSManaged public var message: Message?

}
 .navigationBarTitle("Send Message", displayMode: .inline)
            .navigationBarItems(trailing: Button(action: {

            }) {
                Text("Send")
                    .onTapGesture {
                        let newMessage = Message(context: self.moc)
                        newMessage.keywords = self.keywords
            })
        }

【问题讨论】:

    标签: ios swift core-data swiftui


    【解决方案1】:

    您的 Message 类应该有一个名为 addToKeywords 的生成方法,该方法将 Set 作为参数

    newMessage.addToKeywords(self.keywords)
    

    【讨论】:

    • ths,但是 addToKeywords(value: NSSet) 必须是 NSSet,但是我的关键字是 NSFetcheResults 来​​自 moc
    • 获取请求返回一个数组,您可以轻松地从数组中创建一个Set对象
    • 我使用这个:newMessage.addToKeywords(NSSet(array: self.KeywordTitleArray))。但在模拟器中,应用程序崩溃
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 1970-01-01
    • 2015-09-24
    • 2010-10-16
    • 2013-02-20
    • 2021-07-28
    • 2016-04-15
    相关资源
    最近更新 更多