在Realm中存储“无符号长整数”的最佳实践scheme

我必须在像14000822124935161134这样的Realm存储中存储大量数据。 目前我通过将它们的types更改为string来存储它们,如下所示,然后保存:

  NSMutableDictionary *itemInsert = [item mutableCopy]; if([item valueForKey:@"timestamp"]) { unsigned long long timestamp = [[item valueForKey:@"timestamp"] unsignedLongLongValue]; [itemInsert setObject:[NSString stringWithFormat:@"%llu", timestamp] forKey:@"timestamp"]; } RLMRealm *realm = [RLMRealm defaultRealm]; [realm beginWriteTransaction]; [RMember createOrUpdateInRealm:realm withValue:itemInsert]; [realm commitWriteTransaction]; 

而我的RLMObjecttimestamp属性定义如下:

 @interface RMember : RLMObject ... @property (nullable) NSString *timestamp; ... @end 

Realm这种types的数据还有什么合适的types而不是string

领域支持long long ; 它只是不支持unsigned变体。

您可以简单地将该值保存long long并提供一个getter访问器,当从数据库中检索到该访问器时,该访问器将显式地将其转换回unsigned long long

 @interface RMember : RLMObject @property long long timestamp; @end unsigned long long timestamp = [[item valueForKey:@"timestamp"] unsignedLongLongValue]; RLMRealm *realm = [RLMRealm defaultRealm]; RMember *myObject = ...; [realm transactionWithBlock:^{ myObject.timestamp = (long long)timestamp; }]; unsigned long long savedTimestamp = (unsigned long long)myObject.timestamp; NSLog(@"Saved timestamp is %llu", savedTimestamp); 

testing我的iPad Air,它似乎正在按预期工作:

在这里输入图像说明