NSObject serialization/deserialization

  1. Convert NSObject(or your custom object extends from NSObject) to NSDictionary
  2. Convert NSDictionary to NSData
  3. Convert NSData to NSString(json format)

NSString <– NSData –> NSDictioanry <–> NSObject

NSString <– NSData –> NSArray

NSData and NSString

NSString *myNSString = 
    [[NSString alloc]initWithData:myNSData 
                         encoding:NSUTF8StringEncoding];

NSData *myNSData = 
    [myNSString dataUsingEncoding:NSUTF8StringEncoding];

NSData and NSDictionary

NSDictionary *myNSDictionary = 
    [NSJSONSerialization JSONObjectWithData:myNSData 
                                    options:NSJSONReadingAllowFragments 
                                      error:&error];

NSData *jsonData = 
    [NSJSONSerialization dataWithJSONObject:yourDictionary 
                            options:0 error:&err];

NSData and NSArray

NSData *jsonData = 
    [NSJSONSerialization dataWithJSONObject:myNSArray 
                                    options:NSJSONWritingPrettyPrinted 
                                      error:&error];

NSArray *myNSArray = [NSJSONSerialization JSONObjectWithData:myNSData options:NSJSONReadingAllowFragments error:&error];

Getter

Access custom class’s object in NSDictionary

MyClass1 *myClass1 = 
    [[MyClass1 alloc]initWithNSDictionary:[myNSDictionary objectForKey:@"key1"]];
NSArray *myNSArrayList = [[NSArray alloc]init];
myNSArrayList = [myNSDictionary objectForKey:@"myNSArrayList"];

Access custom class’s object in NSArray

MyClass *myClass = 
    [[MyClass alloc] initWithNSDictionary:[myNSArray objectAtIndex:i]];

Further Readings:
https://blog.soff.es/archiving-objective-c-objects-with-nscoding