Thursday 15 September 2011

ios - Swift. Mapping from JSON to object model. Array of Array -



ios - Swift. Mapping from JSON to object model. Array of Array -

there's model in json format

{ "offline": false, "data": { "path": [ [ { "latitude": 56.789351316653, "longitude": 60.6053340947616 }, { "latitude": 56.78674, "longitude": 60.60613 } ], [ { "latitude": 56.79071, "longitude": 60.60492 }, { "latitude": 56.79129, "longitude": 60.60493 } ] ] } }

and object model on swift

http://pastebin.com/j0mk8eyg

issue: can't parse path field of json, because there array of arrays. in case of arrays single dimension works well.

i had similar. looked @ implementation of mtl_jsonarraytransformerwithmodelclass transforms array of dictionaries , array of mtlmodels. made similar transformer expects array of array of dictionaries/mtlmodels. iterate on outermost array , transform each array of dictionaries mtl_jsonarraytransformerwithmodelclass.

+ (nsvaluetransformer *)jsonarrayofarraystransformerwithmodelclass:(class)modelclass nsvaluetransformer *arraytransformer = [nsvaluetransformer mtl_jsonarraytransformerwithmodelclass:modelclass]; homecoming [mtlvaluetransformer reversibletransformerwithforwardblock:^id(nsarray *arrays) { if (arrays == nil) homecoming nil; nsassert([arrays iskindofclass:nsarray.class], @"expected array, got: %@", arrays); nsmutablearray *modelarrays = [nsmutablearray arraywithcapacity:[arrays count]]; (id jsonarray in arrays) { if (jsonarray == nsnull.null) { [modelarrays addobject:jsonarray]; continue; } nsassert([jsonarray iskindofclass:nsarray.class], @"expected array of arrays of dictionaries, got array of: %@", jsonarray); nsarray *modelarray = [arraytransformer transformedvalue:jsonarray]; if (modelarray == nil) continue; [modelarrays addobject:modelarray]; } homecoming modelarrays; } reverseblock:^id(nsarray *arrays) { if (arrays == nil) homecoming nil; nsassert([arrays iskindofclass:nsarray.class], @"expected array of arrays of mtlmodels, got: %@", arrays); nsmutablearray *modelarrays = [nsmutablearray arraywithcapacity:modelarrays.count]; (id modelarray in arrays) { if (modelarray == nsnull.null) { [modelarrays addobject:nsnull.null]; continue; } nsassert([modelarray iskindofclass:nsarray.class], @"expected array of arrays, got array of: %@", modelarray); nsarray *array = [arraytransformer reversetransformedvalue:modelarray]; if (array == nil) continue; [modelarrays addobject:array]; } homecoming modelarrays; }];

}

ios swift restkit

No comments:

Post a Comment