Ios 如何在核心数据中为唯一用户保存聊天记录,并在需要时获取

Ios 如何在核心数据中为唯一用户保存聊天记录,并在需要时获取,ios,swift,core-data,Ios,Swift,Core Data,根据我的要求,我必须用userid将用户的所有聊天记录保存在核心数据中,当再次访问用户页面时,我必须通过userid获取之前的聊天记录 我有一个聊天实体,它有msg、userType和time属性。 我必须将其保存在Users实体中,就像用户的每条消息(聊天对象)应该保存在Users中一样,并且可以使用核心数据中唯一的用户ID进行重新蚀刻 下面是我用来保存数据的代码 func saveDataToModel(msg:MessagesData) { let chats

根据我的要求,我必须用userid将用户的所有聊天记录保存在核心数据中,当再次访问用户页面时,我必须通过userid获取之前的聊天记录

我有一个聊天实体,它有msg、userType和time属性。

我必须将其保存在Users实体中,就像用户的每条消息(聊天对象)应该保存在Users中一样,并且可以使用核心数据中唯一的用户ID进行重新蚀刻

下面是我用来保存数据的代码

func saveDataToModel(msg:MessagesData)
    {
        let chats = Chats(context: context!)
        chats.msg = msg.message
        chats.userType = msg.userType

        users?.userChats = chats
        if let ids = viewModel?.userSelected?.id
        {
            users?.id = Int16(ids)
        }

        //saveContext()
        do {
            try context?.save()
        } catch {
            print("Failed saving")
        }
    }
下面是获取的代码

func getDataFromCoreData() {
        let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
        request.returnsObjectsAsFaults = false
        do {
            let result = try context?.fetch(request)
            if (result != nil) {
                for data in (result as? [NSManagedObject])! {
                    print("data",data)
                }
            }
        } catch {

            print("Failed")
        }
    }

感谢您的帮助

为什么要使用额外的可转换结构而不是核心数据关系?关系要有效得多。为什么不使用更具体的
NSFetchRequest
甚至
NSFetchRequest
而不是大多数未指定的
NSFetchRequest
?要过滤数据,必须添加谓词。问题出在哪里?
struct MessagesData {
    var message:String?
    var userType:String?
}