Сохранение (long long) в модели CoreData - PullRequest
0 голосов
/ 17 октября 2018

Вопрос очень начального уровня, который я не могу решить:

В Objective-C я могу получить миллис с 1970 года с (long long)([[NSDate date] timeIntervalSince1970] * 1000.0) здесь ).

Я хотел бы сохранить в модели CoreData, но у меня есть только следующие варианты:

enter image description here

Дело в том,Я даже не знаю, что я конвертирую из , так как подпись для timeIntervalSince1970: (instancetype)dateWithTimeIntervalSince1970:(NSTimeInterval)secs;

Из быстрого Google я нахожу, что (instancetype) является экземпляромчто я оперирую (если я правильно понимаю), это NSDate.Если это количество секунд с 1970 года, имеет смысл умножить на 1000, чтобы получить миллисекунды.Почему я могу умножить NSDate на (int)?Ничто в документах не заставляет меня верить, что это правильный способ делать вещи.

И вот тут я немного застреваю.Я умножаю на 1000 и в итоге получаю что-то , которое затем преобразую в (long long), что мне нравится, но затем мне нужно выбрать подходящий тип из списка возможностей CoreData, который имеет точностьхранение (long long) или что-то эквивалентное.

  • Какой тип данных я должен выбрать в CoreData?
  • Что возвращает мне умножение NSDate на целое число?(Возможно, со ссылкой, более полезной, чем документы Apple?)

1 Ответ

0 голосов
/ 17 октября 2018

A long long совпадает с Integer 64.

Вы не можете умножить NSDate на целое число.NSDate - это момент времени.Можно спросить, сколько секунд это мгновение от нескольких контрольных дат (одна из которых - эпоха Unix), но сама по себе NSDate не та вещь.Это момент во времени.(Внутренне оно хранится как Double количество секунд с «контрольной даты» 00:00:00 UTC 1 января 2001 года, но это деталь реализации, и вам не следует об этом беспокоиться.)

Как правило, однако, вы должны хранить даты как даты в Базовых данных.Не конвертируйте в числа и не думайте в миллисекундах.Это яма с ошибками.Если у вас есть дата, выберите тип «Дата» в Базовых данных, чтобы сохранить ее.

-dateWithTimeIntervalSince1970 возвращает NSTimeInterval, который является typealias для Double.Я не уверен, где вы видите (instancetype) в качестве возвращаемого значения.Как вы говорите, это будет NSDate, что не имеет смысла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...