Size: a a a

iOS Developers — русскоговорящее сообщество

2020 April 23

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
Vlad
Вопрос к тем, кто использует CoreData. Есть transformable атрибут (кастомный класс) у NSObject. Этот класс имплементит NSObject, NSCoding, Codable. Проблема в том, что он отказывается сохранятся. То есть при создании новго NSObject все атрибуты отлично сохраняются (в том числе и другие transofrmable), а этот не хочет, ошибок никаких нет, но если потом проверить переменные внутри атрибута - получаю дефолтные значения при декодинге, подскажите в какую сторону копать
покажи инициализатор для codable
источник

V

Vlad in iOS Developers — русскоговорящее сообщество
Denis Kim
покажи инициализатор для codable
источник

RK

Roman Krasnikov in iOS Developers — русскоговорящее сообщество
tox
хм) я как разраб эти кнопочки не вижу))
Значит тебе нужно права дать другие, которые покруче
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
у тебя проблема в том, что ты пытаешься сохранить объект, все поля сохраняются а это поле нет. да?
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
и под объектом я понимаю NSManagedObject, а не как у тебя в вопросе NSObject, правильно?
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
Есть transformable атрибут (кастомный класс) у NSObject.
вот тут ты имел ввиду NSManagedObject?
источник

V

Vlad in iOS Developers — русскоговорящее сообщество
Denis Kim
у тебя проблема в том, что ты пытаешься сохранить объект, все поля сохраняются а это поле нет. да?
а я походу нашел проблему, и она даже не в CoreData, а в convenience init. Coder.decodeObject не декодит Int, для этого оказывается просто нужен был Coder.decodeInteger. Спасибо за наводку про инициализатор codable. Осталось понять как правильно теперь декоуднуть Date. Другие Transformable нормально работали, потому что там переменные это всего лишь String были, без дат и чисел, поэтому там decodeObject работал правильно. Пошел исправлять, еще раз спасибо за наводку, полдня ковырял кордату, думал, что я как-то неправильно сохраняю в другом потоке
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
да я наугад ляпнул, я ваще думал что ты объекту в кордате меняешь конечные поля у transformable, а не само поле, отчего контекст не понимает, что произошли изменения в объекте
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
ну как следствие не сохраняет
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
вообще это странно что нельзя обычный Int положить (видимо ожидается врапинг в NSNumber), хотя например UserDefaults такое позволяют. видимо это из-за самой кордаты
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
Vlad
а я походу нашел проблему, и она даже не в CoreData, а в convenience init. Coder.decodeObject не декодит Int, для этого оказывается просто нужен был Coder.decodeInteger. Спасибо за наводку про инициализатор codable. Осталось понять как правильно теперь декоуднуть Date. Другие Transformable нормально работали, потому что там переменные это всего лишь String были, без дат и чисел, поэтому там decodeObject работал правильно. Пошел исправлять, еще раз спасибо за наводку, полдня ковырял кордату, думал, что я как-то неправильно сохраняю в другом потоке
сохраняй дату как nsvalue(timeinterval) или double наверно
источник

MG

Mark Gromov in iOS Developers — русскоговорящее сообщество
Ребят, кто разбирается в Server-side swift отпишитесь в лс, пожалуйста
источник

V

Vlad in iOS Developers — русскоговорящее сообщество
Denis Kim
вообще это странно что нельзя обычный Int положить (видимо ожидается врапинг в NSNumber), хотя например UserDefaults такое позволяют. видимо это из-за самой кордаты
да, мне тоже это показалось странным, учитывая что coder.encode съедает все, что ему закинешь
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
хотя и у userdefaults я всегда беру valueforkey, а не object
источник

V

Vlad in iOS Developers — русскоговорящее сообщество
Denis Kim
сохраняй дату как nsvalue(timeinterval) или double наверно
а вот дату decodeObject нормально обрабатывает
источник

YT

Ysim Tokido in iOS Developers — русскоговорящее сообщество
var urlToData: URL {
   let path = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true) [0] + "/data.json"
   
   let urlPath = URL(fileURLWithPath: path)
   return urlPath
}
что это за конструкция что после URL идут фигурные
скобки?
источник

DK

Denis Kim in iOS Developers — русскоговорящее сообщество
да
источник

S

Stanislav in iOS Developers — русскоговорящее сообщество
Ysim Tokido
var urlToData: URL {
   let path = NSSearchPathForDirectoriesInDomains(.libraryDirectory, .userDomainMask, true) [0] + "/data.json"
   
   let urlPath = URL(fileURLWithPath: path)
   return urlPath
}
что это за конструкция что после URL идут фигурные
скобки?
Свойство вычисляемое
источник

КС

Константин Синчило... in iOS Developers — русскоговорящее сообщество
шото не могу понять как в realm primaryKey засетить int. гугл ерунду подсовывает
P.S ещё и в связке со старым objectMapper
источник
2020 April 24

КС

Константин Синчило... in iOS Developers — русскоговорящее сообщество
@objc dynamic var invoiceId = 0
override public class func primaryKey() -> String? {
       
return "invoiceId"
   }

это дичь,конечно
источник