如何在 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
}
我正在尝试遵循 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
}