NSData到Custom NSObject

jki*_*gel 2 objective-c nsdata nsobject ios

我正在尝试使用蓝牙在2个设备之间传输数据.设备A持有自定义NSObject.设备B正在接收此自定义NSObject作为NSData.

将收到的NSData解码为自定义NSObject的最佳方法是什么?

谢谢!

sam*_*tte 10

您必须实现自定义对象的encodeWithCoder:initWithCoder:方法,以便它知道如何从NSData对象进行编码和解码:

- (void)encodeWithCoder:(NSCoder *)coder{
    [coder encodeObject:self.property forKey:@"property"];
    // all other properties
}

- (id)initWithCoder:(NSCoder *)decoder {
    if (self = [super init]) {
        self.property = [decoder decodeObjectForKey:@"property"];
        // all other properties
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

然后使用以下方法将其从NSData解码为NSObject:

NSObject *object = [NSKeyedUnarchiver unarchiveObjectWithData:data];
Run Code Online (Sandbox Code Playgroud)

另一种方式:

[NSKeyedArchiver archiveRootObject:object toFile:self.filePath];
Run Code Online (Sandbox Code Playgroud)

  • 您应该添加如何使用`NSKeyedArchiver`将对象编码为`NSData`. (3认同)