An example of a RLMObject base model class that uses a primary key and some generic default properties. Subclasses can then set metadata specific to their needs.
@interface BaseModel : RLMObject
@property NSString *uuid;
@property NSString *metadata;
@end
@implementation BaseModel
+ (NSString *)primaryKey
{
return @"uuid";
}
+ (NSDictionary *)defaultPropertyValues
{
NSMutableDictionary *defaultPropertyValues = [NSMutableDictionary dictionaryWithDictionary:[super defaultPropertyValues]];
NSString *uuid = [[NSUUID UUID] UUIDString];
[defaultPropertyValues setValue:@"" forKey:@"metadata"];
[defaultPropertyValues setValue:uuid forKey:@"uuid"];
return defaultPropertyValues;
}
+ (NSArray *)ignoredProperties
{
return @[];
}
@end