Я создаю приложение, которое позволяет пользователям называть цвета. Например, пользователи могут называть # 00FFFF как «зеленый». Мне нужно сохранить эти имена и соответствующие цвета в Core Data.Как сохранить пары ключевых значений в данных ядра?
Я думаю, что лучший способ сделать это - сохранить пары в качестве пар ключ-значение - цвет как ключ, а имена в качестве значений. Но когда я создал новый объект и добавил два атрибута, у меня нет способа сообщить Core Data, что цвет является «первичным ключом» или чем-то еще. И я не могу сказать Core Data, чтобы получить соответствующие имена.
Я подумал о некоторых обходных решениях, но они недостаточно «осторожны».
Сохраните пары ключ-значение в качестве словаря в
NSUserDefaults
. Но я могу сохранить только[String: AnyObject]
. Мне нужен[Int: String]
. Я знаю, что я могу преобразовать ints в строки, но это делает код более нечитаемым и невоспроизводимым. Кроме того, мне нужно указать значение для ключа отAnyObject
доString
, что совсем другое, что мне не нравится. Это похоже на то, что дженерики не были изобретены.Я могу сохранить цвет и имя в объекте Core Data. Когда я хочу найти то, что соответствует названию цвета, я использую линейный поиск по всему предмету.
Как это:
for item in allTheColorNames {
if item.color == theStuffIWantToFind {
// do something
break
}
}
Я хотел бы сделать это на одном дыхании. Вышеприведенный код не очень элегантный, вы знаете, что я имею в виду?
Есть ли способ сохранить пары цветов в базовых данных, чтобы я мог сделать что-то вроде этого?
var theNameOfGreen = colorNameDictionary[0x00ff00]
Но можно ли программно отредактировать plist? – Sweeper
Да, см. Мое редактирование. –
Хм ... Похоже, неплохо использовать плиты в этой ситуации.Но я не могу понять ваш код. Но спасибо за идею в любом случае! Я сделаю еще несколько исследований по plists! – Sweeper