Другой вариант, когда вам нужно иметь возможность перейти к функциям библиотеки C:
let str = hexColour.cStringUsingEncoding(NSUTF8StringEncoding)
let x = strtol(str!, nil, 16)
Я использую шаблон репозитория из-за принципа единой ответственности. Я не хочу, чтобы каждый отдельный объект знал, как сохранять, обновлять, удалять самого себя, когда это может обрабатываться одним общим репозиторием
Шаблон репозитория не обязательно ведет к тупым объектам. Если у объектов нет логики за пределами сохранения / обновления, вы, вероятно, слишком много делаете вне объекта.
В идеале вам никогда не следует использовать свойства для получения данных от вашего объекта, вычислений и помещения данных обратно в объект. Это нарушение инкапсуляции.
Таким образом, объекты не должны быть анемичными, за исключением случаев, когда вы используете простые объекты DTO с операциями CRUD.
Тогда разделение проблем сохранения и ваших объектов - хороший способ получить единую ответственность.