У меня есть следующий сценарий, я сохраняю объект в области с текущей датой, например:
RLMChatMessage *chat = [[RLMChatMessage alloc] init];
chat.chatFrom = from;
chat.chatTo = to;
chat.timeStamp = [NSDate date];
RLMRealm *realm = [RLMRealm defaultRealm];
[realm transactionWithBlock: ^{
[realm addObject: chat];
}];
Чтобы отправить метку времени на сервер, я преобразую ее в NSString следующим образом:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat: @"YYYYMMddHHmmssSSS”]; // Capital ’S’ is milliseconds
[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
return [dateFormat stringFromDate: date];
Результат метки времени в NSString: 20190612090741181 с форматом «ГГГГМДДЧЧммсссс».
Когда я получаю подтверждающее сообщение для конкретной метки времени, я преобразую NSString обратно в NSDate:
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat: @"YYYYMMddHHmmssSSS”];
[dateFormat setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
return [dateFormat dateFromString: strTime];
Я запрашиваю чат с отметкой времени (объект NSDate, созданный с помощью вышеуказанного кода) следующим образом:
RLMResults *results = [RLMChatMessage objectsWhere:@"timeStamp == %@", date];
return results.firstObject;
К сожалению, в результатах не найдено ни одного объекта. Каким-то образом Realm может 'Кажется, я не могу найти объект чата с предоставленной временной отметкой NSDate. Используя приложение Realm Browser для просмотра в базе данных, я вижу свойство NSDate со следующей NSDate:
NSLogвывод в Xcode для преобразования метки времени NSString в NSDate выглядит следующим образом:
Так что оба показывают метку времени NSDate одинаково. Я предполагаю, что оба print объект NSDate по местному времени моей машины.Так почему же Realm не может найти объект чата?Я как бы потерялся здесь.Надеюсь, кто-нибудь может мне помочь.