Je suis nouveau avec les trucs de JSon, alors fais avec moi. Je désérialise un JSon d'une URL, et tout va bien jusqu'à ce que j'essaie de séparer les objets à l'intérieur. L'application se bloque et j'obtiens une erreur que je ne comprends pas. Peut-être que tu peux m'aider à voir ce qui me manque.Séparer des objets ou des chaînes dans NSMutableArray?
[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){
if ([data length]>0 && error == nil) {
id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
if (jsonObject != nil && error == nil) {
if ([jsonObject isKindOfClass:[NSDictionary class]]) {
NSDictionary *deserializedDictionary = [[NSDictionary alloc] init];
deserializedDictionary = jsonObject;
NSLog(@"Deserialized Dictionary = %@",deserializedDictionary);
/*
LOG: Deserialized Dictionary = { d = "[{\"unit\":\"P101\",\"price\":36.0000,\"stat\":\"process\",\"type\":\"P12\"},{\"unit\":\"P102\",\"price\":38.0000,\"stat\":\"process\",\"type\":\"P13\"},..}
*/
NSMutableArray *dicts = [[NSMutableArray alloc] init];
dicts = (NSMutableArray *)deserializedDictionary[@"d"];
NSLog(@"Print dicts: %@",dicts);
/*
LOG: Print dicts: [{"unit":"P101","price":36.0000,"stat":"process","type":"P12"},{"unit":"P102","price":38.0000,"stat":"process","type":"P13"},..]
*/
NSLog(@"%@",NSStringFromClass([dicts class]));
//LOG: __NSCFString
NSMutableDictionary *myDict = [[NSMutableDictionary alloc] init];
for (myDict in dicts)
{
NSLog(@"myDict objectForKey: id-> %@ myDict objectForKey: result-> %@",[myDict objectForKey:@"unit"],[myDict objectForKey:@"result"]);
}
}
Et puis je reçois cette erreur:
[__NSCFString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x7fe97b327790 2016-03-08 11:29:12.946 Poop[49680:5673839] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x7fe97b327790'
Aide, s'il vous plaît?
Quelque part, vous dites que votre objet est un 'NSArray' d'un' NSDictionary' (pas sûr lequel), et c'est en fait un 'NSString' qui provoque le" sélecteur non reconnu envoyé à l'instance ". Il semble que dicts class soit un 'NSString' et non un' NSMutableArray'. Et il y a somme alloc/init tout à fait faux ... – Larme
Où il s'écrase exactement, sur quelle ligne?Changez aussi cette ligne - dicts = (NSMutableArray *) deserializedDictionary [@ "d"]; à dicts = dictionnaire désérialisé [@ "d"]; –
Veuillez poster votre tableau échantillon afin que je puisse vérifier votre code en fonction de sa structure –