2013-02-24 1 views
2

Я пытаюсь передать данные между двумя устройствами, использующими bluetooth. Устройство A содержит пользовательский NSObject. Устройство B получает этот пользовательский NSObject как NSData.NSData to Custom NSObject

Каков наилучший способ декодирования полученных NSData в пользовательский NSObject?

Спасибо!

ответ

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; 
} 

И тогда вы расшифровать его из NSData в NSObject с помощью :

NSObject *object = [NSKeyedUnarchiver unarchiveObjectWithData:data]; 

другой путь:

[NSKeyedArchiver archiveRootObject:object toFile:self.filePath]; 
+3

Вы должны добавить как использовать 'NSKeyedArchiver' для кодирования объекта в' NSData'. – rmaddy