Antworten:
Verwenden Sie NSKeyedArchiver (dies ist der letzte Satz der Post-Garrett-Links):
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:array];
Beachten Sie, dass alle Objekte in array
dem NSCoding
Protokoll entsprechen müssen . Wenn es sich um benutzerdefinierte Objekte handelt, müssen Sie sich über das Codieren und Decodieren von Objekten informieren .
Beachten Sie, dass dadurch ein ziemlich schwer lesbares Eigenschaftenlistenformat erstellt wird, das jedoch eine Vielzahl von Objekten verarbeiten kann. Wenn Sie ein sehr einfaches Array haben (z. B. Zeichenfolgen), möchten Sie möglicherweise NSPropertyListSerialization verwenden, wodurch eine etwas einfachere Eigenschaftsliste erstellt wird:
NSString *error;
NSData *data = [NSPropertyListSerialization dataFromPropertyList:array format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error];
Es gibt auch eine XML-Formatkonstante, die Sie übergeben können, wenn Sie möchten, dass sie auf dem Kabel lesbar ist.
In einem ähnlichen Zusammenhang würden Sie die NSData wie folgt zurück in ein NSArray konvertieren:
NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data]
Ich bin nicht sicher, ob dies Ihnen helfen wird, aber es ist ein Link für ein NSMutableArray zu NSData .
Ich habe diesen Code verwendet.
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];