Objetivo C: get subcadena entre comillas dobles

¿Cuál sería la mejor manera de get cada subcadena entre comillas dobles y convertirla en una matriz?

Por ejemplo, si la cadena (NSString) es:

@"abcd \"efgh\" ijklm \"no\" p \"qrst\" uvwx \"y\" z" 

Quiero que el resultado sea:

 {@"efgh", @"no", @"qrst", @"y"} 

como un NSArray.

Esto debería comenzar:

 NSString *str = @"abcd \"efgh\" ijklm \"no\" p \"qrst\" uvwx \"y\" z"; NSMutableArray *target = [NSMutableArray array]; NSScanner *scanner = [NSScanner scannerWithString:str]; NSString *tmp; while ([scanner isAtEnd] == NO) { [scanner scanUpToString:@"\"" intoString:NULL]; [scanner scanString:@"\"" intoString:NULL]; [scanner scanUpToString:@"\"" intoString:&tmp]; if ([scanner isAtEnd] == NO) [target addObject:tmp]; [scanner scanString:@"\"" intoString:NULL]; } for (NSString *item in target) { NSLog(@"%@", item); } 

Una forma sería utilizar componentsSeparatedByString: para dividirlos en function de " . Esto debería darle un set de palabras cuya count debe ser impar. Filtre todas las palabras pares en una matriz. Debe ser su matriz deseada.

Alternativamente, mire NSPnetworkingicate .