请根据我提供的DataAccessProtocol.swift代码和部分CoreDataAccess.swift代码来优化ChatViewModel.swift文件。可以利用 fetchPersonsInChat来优化吗？

这是目前DataAccessProtocol.swift的代码：import Foundation
import CoreData

protocol DataAccessProtocol {
    var managedObjectContext: NSManagedObjectContext { get }
    
    // CRUD operations for Person
    func createPerson(id: UUID, name: NAME_1, avatar: NAME_1, introduction: NAME_1) -> Person?
    func fetchPerson(by id: UUID) -> Person?
    func updatePerson(person: Person, name: NAME_1, avatar: NAME_1, introduction: NAME_1) -> Bool
    func deletePerson(person: Person) -> Bool
    
    // CRUD operations for Contact
    func createContact(id: UUID, name: NAME_1, avatar: NAME_1, introduction: NAME_1, roleSetting: NAME_1) -> Contact?
    func fetchContact(by id: UUID) -> Contact?
    func updateContact(contact: Contact, name: NAME_1, avatar: NAME_1, introduction: NAME_1, roleSetting: NAME_1) -> Bool
    func deleteContact(contact: Contact) -> Bool
    
    // CRUD operations for User
    func createUser(id: UUID, name: NAME_1, avatar: NAME_1, introduction: NAME_1, userInfo: NAME_1) -> User?
    func fetchUser(by id: UUID) -> User?
    func updateUser(user: User, name: NAME_1, avatar: NAME_1, introduction: NAME_1, userInfo: NAME_1) -> Bool
    func deleteUser(user: User) -> Bool
    
    // CRUD operations for Chat
    func createChat(id: UUID, name: NAME_1, isGroup: Bool, topic: NAME_1) -> Chat?
    func fetchChat(by id: UUID) -> Chat?
    func updateChat(chat: Chat, name: NAME_1, isGroup: Bool, topic:  The letter b should appear at least 35 times.
user