【发布时间】:2016-08-05 11:48:05
【问题描述】:
我正在构建一个允许用户命名颜色的应用程序。例如,用户可以将#00FFFF 命名为“green”。我需要将这些名称和相应的颜色存储在 Core Data 中。
我认为最好的方法是将这些对保存为键值对 - 颜色作为键,名称作为值。但是当我创建一个新实体并添加两个属性时,我没有办法告诉 Core Data 颜色是“主键”什么的。而且我不能告诉 Core Data 给我相应的名字。
我已经想到了一些解决方法,但它们还不够“迅速”。
将键值对保存为
NSUserDefaults中的字典。但我只能在那里保存[String: AnyObject]。我需要的是[Int: String]。我知道我可以将整数转换为字符串,但这只会使代码更加不可读和不迅速。另外,我需要将键的值从AnyObject转换为String,这是我不喜欢的另一件事。就像没有发明泛型一样。我可以将颜色和名称保存在 Core Data 实体中。当我想找到一种颜色的对应名称时,我会线性搜索整个事物。
像这样:
for item in allTheColorNames {
if item.color == theStuffIWantToFind {
// do something
break
}
}
我希望我能一口气完成。上面的代码不是很优雅,你懂我的意思吗?
有没有办法将颜色名称对存储在 Core Data 中,以便我可以做这样的事情?
var theNameOfGreen = colorNameDictionary[0x00ff00]
【问题讨论】:
标签: ios swift core-data keyvaluepair