我在CoreData中存储了一个'color'项作为字符串。是否可以将其设置为文本或形状上的颜色属性?例如,而不是这样:第一个月我能做这样的事吗?.foregroundColor(Color string from CoreData here?)个
.foregroundColor(Color string from CoreData here?)
qojgxg4l1#
有多种方法可以实现这一要求:
方案1:
将十六进制字符串存储到数据库中,并将该十六进制字符串转换为UIColor和UIColor转换为Color,您可以使用它在文本或任何形状上显示。
UIColor
Color
解决方案2:
您必须编写一个枚举,将字符串Map到Color
参考号:
https://www.hackingwithswift.com/example-code/uicolor/how-to-convert-a-hex-color-to-a-uicolor
c3frrgcw2#
如果您想要使用的颜色数量有限,只需创建一个字典,将颜色的字符串名称Map到相应的Color。然后将字符串存储到CoreData中,并在您希望在UI中使用颜色时使用字典应用所需的Map。下面是一个例子。CoraData中的Student实体有3个属性:name(字符串)、hColor(字符串)和id(UUID)。
import SwiftUI let colorDict: [String: Color] = ["green" : .green, "red" : .red, "brown" : .brown, "blue" : .blue, "purple" : .purple ] struct ContentView: View { @FetchRequest(sortDescriptors: []) var students: FetchedResults<Student> @Environment(\.managedObjectContext) var moc var body: some View { // The saved hColor string is used to specify the foreground color VStack { List(students) { student in Text(student.name ?? "anonymous") .foregroundColor(colorDict[student.hcolor ?? "blue"]) } Button("Add") { //generate random student names and color strings let names = ["Granger", "Lovegood", "Potter", "Weasley"] let chosenName = names.randomElement()! let chosenColor = colorDict.keys.randomElement() // create a student object (including its randomly chosen // color string attribute) to save to CoreData let student = Student(context: moc) student.id = UUID() student.name = chosenName student.hcolor = chosenColor //save the managed object context. do{try moc.save()} catch{} } } .padding() } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
字符串
2条答案
按热度按时间qojgxg4l1#
有多种方法可以实现这一要求:
方案1:
将十六进制字符串存储到数据库中,并将该十六进制字符串转换为
UIColor
和UIColor
转换为Color
,您可以使用它在文本或任何形状上显示。解决方案2:
您必须编写一个枚举,将字符串Map到
Color
参考号:
https://www.hackingwithswift.com/example-code/uicolor/how-to-convert-a-hex-color-to-a-uicolor
c3frrgcw2#
如果您想要使用的颜色数量有限,只需创建一个字典,将颜色的字符串名称Map到相应的Color。然后将字符串存储到CoreData中,并在您希望在UI中使用颜色时使用字典应用所需的Map。
下面是一个例子。CoraData中的Student实体有3个属性:name(字符串)、hColor(字符串)和id(UUID)。
字符串