Использование свойств NSDate будет прервано iOS ORM "DBAccess"

Я использую каркас DBAccess v1.6.12 с Xcode 7.2.1.

Использование свойств NSDate с подклассом DBObject будет прекращено.

<Error>: -[__NSCFString timeIntervalSinceDate:]: unrecognized selector sent to instance 0x17027eb40
<Warning>: WARNING: GoogleAnalytics 3.14 void GAIUncaughtExceptionHandler(NSException *) (GAIUncaughtExceptionHandler.m:48): Uncaught exception: -[__NSCFString timeIntervalSinceDate:]: unrecognized selector sent to instance 0x17027eb40
<Warning>: void MyUncaughtExceptionHandler(NSException *__strong) [Line 19] Exception Name: NSInvalidArgumentException
<Warning>: void MyUncaughtExceptionHandler(NSException *__strong) [Line 20] Exception Reason: -[__NSCFString timeIntervalSinceDate:]: unrecognized selector sent to instance 0x17027eb40

Воспроизводить:
Установите устройство на японский язык и настройте формат времени на NOT to use 24 hours, тогда преобразованный формат даты становится неправильным форматом.

Я думаю, что DBAccess заставит конвертировать NSDate в TEXT, используя NSDateFormatter без setLocale или используя currentLocale.

// Implements DBDelegate
- (DBAccessSettings*)getCustomSettings {
    DBAccessSettings *settings = [[DBAccessSettings alloc] init];
    settings.useHighPerformanceDates = NO;
    return settings;
}

static void testcode()
{
    NSDate *now = [NSDate date];

    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"yyyy/MM/dd HH:mm:ss"];

    NSLog(@"without setLocale=%@", [formatter stringFromDate:now]);

    [formatter setLocale:[NSLocale systemLocale]];
    NSLog(@"systemLocale=%@", [formatter stringFromDate:now]);

    [formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
    NSLog(@"en_US_POSIX=%@", [formatter stringFromDate:now]);

    [formatter setLocale:[NSLocale currentLocale]];
    NSLog(@"currentLocale=%@", [formatter stringFromDate:now]);
}

//--- English language or `Use 24 hours` to be ON.
without setLocale=2016/04/04 15:40:00
     systemLocale=2016/04/04 15:40:00
      en_US_POSIX=2016/04/04 15:40:00
    currentLocale=2016/04/04 15:40:00

//--- Japanese language and `Use 24 hours` to be OFF.
without setLocale=2016/04/04 15午後3:40:47
     systemLocale=2016/04/04 15:40:47
      en_US_POSIX=2016/04/04 15:40:47
    currentLocale=2016/04/04 15午後3:40:47

Итак, хранится NSDate Данные конвертируются как String. Тогда его столбец будет обрабатываться как тип TEXT.

Я хочу, чтобы DBAccess использовал systemLocale или LocaleIdentifier с "en_US_POSIX" при преобразовании между NSDate и TEXT.

Не могли бы вы сказать мне, как это сделать.

Благодарю.

0 ответов

Другие вопросы по тегам