我试图遵循SwiftUI的模型视图ViewModel格式,但我遇到了UUID问题。我有一个类型为TimeCode
的对象,它具有类型为UUID的属性id
(TimeCode
是在xcdata模型中作为CoreData模型创建的)。为了创建TimeCodeViewModel
对象,我需要在TimeCodeViewModel
中使用与原始TimeCode
对象相同的UUID分配id
属性。因此,我创建了这个类定义:
class TimeCodeViewModel: Identifiable {
var id: UUID
var fullName = ""
init(timeCode: TimeCode) {
self.id = timeCode.id
self.fullName = timeCode.fullName
}
// class methods
}
然而,我得到一个编译时错误,说UUID是一个get-only属性。这是有道理的,因为您不应该能够将对象的唯一ID重新分配给不同的对象,但在这种情况下,我实际上试图描述相同的对象。是否有可能分配self.id
与相同的UUID?
我想另一种方法可能是使UUID字符串,然后分配给视图模型,但它是可能的字符串转换回UUID?例如,我想使用TimeCodeViewModel
的UUID从CoreData中获取原始TimeCode
,这样我就可以将编辑保存到TimeCode
的其他属性。
看看TimeCode类是什么样子会很有趣。我认为id设置不正确。如果您想要一个唯一标识符作为字符串,请添加以下内容以生成一个:
var id: String = UUID().uuidString
可以共享字符串,因此可以引用同一个对象。
编辑:对于新信息,将类更改为以下内容可能是一个主意:
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
}