Вопрос о дате-времени iPhone SQLite3

#iphone #objective-c #sqlite #datetime #timestamp

#iPhone #objective-c #sqlite #дата-время #временная метка

Вопрос:

В каком формате лучше всего хранить дату, чтобы впоследствии упростить форматирование с помощью Objective-C dateformatter? Дата начнется как временная метка unix, затем примет любой формат, с которым легче всего работать, сохранится в базе данных SQLite3, затем извлекается и обрабатывается с помощью dateformatter. Могу ли я просто использовать временную метку? Или лучше преобразовать его, скажем, в ГГГГ / мм / дд или что-то в этомроде.

Ответ №1:

Я думаю, вы захотите сохранить его в формате ГГГГМДДХХМ ММСС для удобства сортировки.

Вы пишете код sqlite напрямую? Почему бы не использовать платформу управляемых данных, такую как Core Data (базовое хранилище данных — sqlite), это значительно упростило бы вашу жизнь. В этом небольшом примере используется NSSortDescriptor для сортировки по столбцу FileDate. AssetItem является подклассом NSManagedObject

 NSFetchRequest *nsrequest = nil;
NSEntityDescription *entity = nil;

NSError *error; 

// check to see if the scene exists (could have been downloaded previously)
nsrequest = [[NSFetchRequest alloc] init];
entity = [NSEntityDescription entityForName:@"AssetItem" inManagedObjectContext:managedObjectContext];          
[nsrequest setSortDescriptors:[NSArray arrayWithObject:[[[NSSortDescriptor alloc] initWithKey:@"FileDate" ascending:NO] autorelease]]];     
[nsrequest setEntity:entity];

NSArray *objs = [[managedObjectContext executeFetchRequest:nsrequest error:amp;error] retain];

for (AssetItem *item in objs) {
    NSLog(@"file date is: %@", [item FileDate]);
}
[objs release];
[nsrequest release]
  

;

Вы можете многое моделировать, используя встроенные инструменты Xcode data modeler.

Комментарии:

1. Я получаю данные из основной базы данных MySQL, урезаю их в небольшую архивированную базу данных SQLite, при необходимости доставляю ее с помощью загрузки, а затем использую FMDB для работы с базой данных SQLite. Я больше никогда не буду использовать собственные вызовы SQLite в Obj-C.

2. Изменится ли ваша модель данных? или просто данные? В последнем случае вы всегда можете смоделировать свою базу данных sqlite в Core Data, а затем взять результирующий пустой файл .sqlite db с iPhone и выполнить перевод данных на стороне сервера и загрузить переведенную базу данных .sqlite.