2015-07-07 2 views
0

Пробовал заниматься проблемой на некоторое время. Я анализирую данные из API и внося их в свой основной объект сущности данных, который является Int.Core Data Int работает с правильным значением и выходит с неправильным - Swift

//Visit Details 
if let dateInteger = element["date"] as? Int{ 
    println("RESPONSE OUTSTANDING DATE: \(dateInteger)") 
//OUTPUTTING AS 1435586400 
    visitEntity.dateDue = NSNumber(integer:dateInteger) 
} 

При получении его я использую

//Fetch Vists and related Objects 
     let currentVisits = fetchedResultsController.objectAtIndexPath(indexPath) as! VisitDetails 
     println("TIMESTAMP INT \(currentVisits.dateDue)") 
//Outputing as -14288 

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

+2

Каков тип атрибута в данных ядра? Целое 16, случайно? –

ответ

1

Я могу воспроизвести аналогичную проблему, хотя число, которое я вижу, составляет 20320, а не -14288.

Проверьте, чтобы атрибут dateDue в вашей модели данных был достаточно большим, чтобы удерживать наибольшее значение, возвращаемое вашим API.

Возможно, вы определили его как Int16 вместо Int32 или Int64.

+0

Отлично. Благодарю. Не понимаю, почему int16 будет делать это, но я буду читать. – Allreadyhome

+1

Int16 означает, что для сохранения значения используются 16 бит. Наибольшее значение, которое может быть сохранено в 16 битах, увеличивается до 16 или 65536. Если целое число подписано, то максимальное положительное значение равно половине этого. Когда вы пытаетесь сохранить значение, превышающее это, то, что на самом деле хранится, будет меньшим значением, иногда отрицательным, в зависимости от того, как биты выстраиваются в линию. Биты более высокого порядка усекаются, и исходное значение теряется. –

 Смежные вопросы

  • Нет связанных вопросов^_^