#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.