Elnézést, hogy még egy kérdést teszek fel az NSArray-re való konvertálásról, de ezt még azután sem tudom működésre bírni, hogy több tucat bejegyzést elolvastam ugyanabban a témában. Nagyon egyszerűnek tűnik, de...
- (void) parseList : (NSString *) str {
NSLog(@"list as a string: %@", str);
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
if (!data) NSLog(@"no data");
NSError *err = nil;
NSArray *arr = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&err];
NSLog(@"count: %lu", (unsigned long)[arr count]);
}
Ez a kimenet:
lista karakterláncként: [{"id":"1","name":"példanév","fájlnév":"image.png"}]
szám: 0
Hogyan lehet a tömbszám 0? Egyértelműen egy elem van a tömbben.
Nem akarom feleslegesen bonyolítani ezt a bejegyzést, de ez fontos lehet, szóval íme. Az ebbe a függvénybe átadott karakterláncot a szerver titkosított formátumban adja vissza. Tehát mielőtt ide kerülne, először egy visszafejtési folyamaton megy keresztül, amely így néz ki:
- (NSString *) decryptBase64EncodedString : (NSString *) base64EncodedCipherTextString
base64EncodedIvString : (NSString *) base64IvString
{
NSData *cipherData = [[NSData alloc] initWithBase64EncodedString:base64EncodedCipherTextString options:0];
NSData *ivData = [[NSData alloc] initWithBase64EncodedString:base64IvString options:0];
NSData *data = [self AES128Operation : kCCDecrypt
cipherTextData : cipherData
ivData : ivData];
NSString *decrypted = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
return decrypted;
}
Nem hiszem, hogy ennek a függvénynek a belseje annyira számítana, kivéve talán az utolsó két sort, amelyek rámutatnak arra, hogy ez a karakterlánc hogyan jön létre (az NSData-ból). Lehet, hogy se itt, se ott, de a fő konverzió az NSArray-re olyan egyszerűnek tűnik, hogy itt valami többnek kell történnie. (ha nem egyértelmű, a 'decrypted' karakterlánc az, ami a 'parseList'-be kerül)