2015-04-01 6 views
-2

Я хочу сохранить следующую структуру сына в Core Data.Основные данные архитектурной проблемы NSDictionary?

// Json # 1

{ 
1 = Viktor; 
2 = Fries; 
3 = "0179 2147911"; 
custom =  { 
    name = Test; 
    school = Harvard; 
}; 
id = 0232; 
status = 4; 
lastupdate = 111111; 

}

// JSON # 2

{ 
1 = Viktor; 
2 = Fries; 
3 = "0179 2147911"; 
custom =  { 
    age = Testage; 
    color = blue; 
}; 
id = 0232; 

}

Пользователь может настроить записи в обычае по его собственным. Обе данные JSON должны быть сохранены с использованием той же модели.

Я думаю, что я должен использовать NSDictionary для настраиваемого поля. Как вы думаете? Как я могу получить доступ к настраиваемому полю в NSFetchedresultController?

// Модель

class Contact: NSManagedObject { 

@NSManaged var 1: String? 
@NSManaged var 2: String? 
@NSManaged var 3: String? 
@NSManaged var id: String? 
@NSManaged var status: String? 
@NSManaged var lastupdate: String? 
@NSManaged var id: NSDictionary? <= Don't know how to implement it?! 
} 

Как бы вы должны решить эту проблему?

ответ

0

Я бы реализовать custom как отдельное юридическое лицо, скажем CustomValue и дать ему два атрибута name (которые могли бы быть «возраст», «цвет», «имя», «школа», или что-то еще пользователь выбирает), и value (который будет содержать соответствующее значение «38», «синий» или что угодно). Затем определите отношение от одного к другому от вашего объекта Contact до CustomValue.

Одно из незначительных искажений заключается в том, что value должен всегда иметь тот же тип (для которого строка, вероятно, самая простая), поэтому вам нужно будет преобразовать эту строку в правильный тип (например, Int для «age»).

Если вы называете связь customValues, то доступ к значениям легко осуществляется с помощью путей ключа: myContact.customValues.name и myContact.customValues.value.