2016-07-07 11 views
1

Wie konvertiert man RLMObject in NSDictionary? Dies ist mein Code:iOS OC, Wie konvertiert man RLMObject in NSDictionary, NSArray?

NSString *imei = [Utils getUUID]; 

NSPredicate *pred = [NSPredicate predicateWithFormat:@"imei = %@",imei]; 

RLMResults<RLMRequestHeaderModel *> *models = [RLMRequestHeaderModel objectsWithPredicate:pred]; 

RLMRequestHeaderModel *header = models.firstObject; 

// NSDictionary *headerDict = ... 

return headerDict; 

Antwort

2

Sie den Schlüsselwert verwenden können Eigenschaften von Realm Codierung alle Werte auf ein NSDictionary ziemlich leicht zu extrahieren:

NSMutableDictionary *headerDictionary = [NSMutableDictionary dictionary]; 

RLMSchema *schema = header.objectSchema; 
for (RLMProperty *property in schema.properties) { 
    headerDictionary[property.name] = header[property.name]; 
} 

Lassen Sie mich wissen, ob Sie brauchen zusätzliche Erläuterung!

4

Ich habe dieses Problem mit dieser Klasse gelöst. Sehr ähnlich wie die vorherige Antwort, aber in diesem Fall habe ich eine spezielle Behandlung für RLMArray Objekte oder interne RLMObjects

@implementation RLMObject (NSDictionary) 

- (NSDictionary*) dictionaryRepresentation{ 
    NSMutableDictionary *headerDictionary = [NSMutableDictionary dictionary]; 
    RLMObjectSchema *schema = self.objectSchema; 
    for (RLMProperty *property in schema.properties) { 
     if([self[property.name] isKindOfClass:[RLMArray class]]){ 
      NSMutableArray *arrayObjects = [[NSMutableArray alloc] init]; 
      RLMArray *currentArray = self[property.name]; 
      NSInteger numElements = [currentArray count]; 
      for(int i = 0; i<numElements; i++){ 
       [arrayObjects addObject:[[currentArray objectAtIndex:i] dictionaryRepresentation]]; 
      } 
      headerDictionary[property.name] = arrayObjects; 
     }else if([self[property.name] isKindOfClass:[RLMObject class]]){ 
      RLMObject *currentElement = self[property.name]; 
      headerDictionary[property.name] = [currentElement dictionaryRepresentation]; 
     }else{ 
      headerDictionary[property.name] = self[property.name]; 
     } 

    } 
    return headerDictionary; 
} 

@end 

Lassen Sie mich wissen, ob das Ihnen helfen kann;)

Verwandte Themen