如何在 Swift 中分配 UUID?

How do you assign a UUID in Swift?

我正在尝试遵循 SwiftUI 的模型视图视图模型格式,但 运行 遇到了 UUID 问题。我有一个 TimeCode 类型的对象,它具有 UUID 类型的 id 属性(TimeCode 在 xcdatamodels 中创建为 CoreData 模型)。为了创建一个 TimeCodeViewModel 对象,我需要为 TimeCodeViewModel 中的 id 属性分配与原始 TimeCode 对象相同的 UUID。为此,我创建了这个 class 定义:

class TimeCodeViewModel: Identifiable {
    var id: UUID
    var fullName = ""
    
    
    init(timeCode: TimeCode) {
        self.id = timeCode.id
        self.fullName = timeCode.fullName
    }
    
    // class methods
}

但是,我收到一个编译时错误,指出 UUID 是一个只读 属性。这是有道理的,因为您不应该能够将一个对象的唯一 ID 重新分配给另一个对象,但在这种情况下,我实际上是在尝试描述同一个对象。是否可以为 self.id 分配相同的 UUID?

我想另一种方法可能是将 UUID 设为字符串,然后将其分配给视图模型,但是否可以将字符串转换回 UUID?例如,我想使用 TimeCodeViewModel 中的 UUID 从 CoreData 中获取原始 TimeCode,这样我就可以将编辑保存到 TimeCode.

的其他属性中

看看 TimeCode Class 的样子会很有趣。我认为 id 设置不正确。如果您想要一个唯一标识符作为字符串,请添加以下内容以生成一个:

var id: String = UUID().uuidString

您可以共享字符串并因此引用同一对象。

编辑: 关于新信息,将 class 更改为以下内容可能是一个想法:

class TimeCodeViewModel: Identifiable {
   var id: UUID {
      return timeCode.id
   }
   var fullName = ""
   private var timeCode: TimeCode

   init(timeCode: TimeCode) {
      self.timeCode = timeCode
      self.fullName = timeCode.fullName
   }
   // class methods
 }