在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];
而我的RLMObject
的timestamp
属性定义如下:
@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,它似乎正在按预期工作:
- 如何从UIViewController访问UICollectionViewCell的IBOutlets?
- MPMusicPlayerController systemMusicPlayer播放skipToNextItem速度慢,滞后