Czy ktoś może mi powiedzieć, jak przekonwertować an NSArrayna NSData? Mam NSArray. Muszę to wysłać do NSInputStream. Aby to zrobić, muszę przekonwertować NSArrayplik na NSData.
Proszę, pomóż mi, utknąłem tutaj.
Odpowiedzi:
Użyj NSKeyedArchiver (które jest ostatnim zdaniem linków postu Garretta):
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
Zauważ, że wszystkie obiekty w programie arraymuszą być zgodne z NSCodingprotokołem. Jeśli są to obiekty niestandardowe, oznacza to, że musisz poczytać o obiektach kodowania i dekodowania .
Zauważ, że stworzy to dość trudny do odczytania format listy właściwości, ale może obsłużyć bardzo szeroki zakres obiektów. Jeśli masz bardzo prostą tablicę (na przykład ciągi znaków), możesz użyć NSPropertyListSerialization, która tworzy nieco prostszą listę właściwości:
NSString *error;
NSData *data = [NSPropertyListSerialization dataFromPropertyList:array format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error];
Istnieje również stała formatu XML, którą możesz przekazać, jeśli wolisz, aby była czytelna w sieci.
Z nieco pokrewnej notatki, oto jak przekonwertować NSData z powrotem na NSArray:
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data]
Nie jestem pewien, czy to ci pomoże, ale jest to łącze do NSMutableArray do NSData .
Użyłem tego kodu.
NSError *error;
NSMutableData *jsonData = [[NSJSONSerialization dataWithJSONObject:yourDemoArray
options:0 // Pass 0 if you don't care about the readability of the generated string
error:&error] copy];