Kann mir jemand sagen, wie man ein NSArray
in ein konvertiert NSData
? Ich habe eine NSArray
. Ich muss es an eine senden NSInputStream
. Dazu muss ich das NSArray
in ein konvertieren NSData
.
Bitte helfen Sie mir, ich stecke hier fest.
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 .
quelle
Ich habe diesen Code verwendet.
quelle
Du kannst das-
quelle
In iOS 9+ verwenden Sie dies bitte:
Die ältere Version davon war in iOS 8 veraltet.
quelle
Swift:
quelle