Сбой декодера через соединение Bluetooth

У меня есть объект, который я хочу отправить на другое устройство через Bluetooth. Я успешно настроил соединение Bluetooth и передал закодированную строку NSString; однако я не понял, как правильно использовать инструменты архивации и кодирования для отправки объекта.

Я хочу отправить определенный ниже объект под названием ChatMessage. Он реализует методы делегирования NSCoding initWithCoder и encodeWithCoder, как показано ниже.

Во втором фрагменте кода у меня есть код для отправки и получения данных, т.е. методы, которые приводят к вызову декодера.

Он продолжает падать в последней строке метода декодирования. Я изо всех сил пытался понять, что происходит не так. Любая помощь будет принята с благодарностью!

@interface ChatMessage : NSObject <NSCoding> {
    NSString *sender;
    NSString *message; 
}

@property (nonatomic, retain) NSString *sender;
@property (nonatomic, retain) NSString *message;

@end

- (void)encodeWithCoder:(NSCoder *)coder {
    [coder encodeObject:sender forKey:@"sender"];
    [coder encodeObject:message forKey:@"message"];
}

- (id)initWithCoder:(NSCoder *)coder {
    sender = [[coder decodeObjectForKey:@"sender"] retain];
    message = [[coder decodeObjectForKey:@"message"] retain];
    return self;
}

На мой взгляд, протокол для функций делегата PeerPicker.

- (void) receiveData:(NSData *)data 
        fromPeer:(NSString *)peer 
       inSession:(GKSession *)session 
         context:(void *)context {  

ChatMessage *aMsg = [[ChatMessage alloc] init];

NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]
                                      initForReadingWithData:data];
@try {
    aMsg = [unarchiver decodeObjectForKey:@"myMessage"];
}
@catch (NSException *exception) {
    NSLog(@"Error: %@", exception);
}
@finally {
}

if (!messages) messages = [[NSMutableArray alloc] init];
    [messages addObject:aMsg];

// reload the table
[messageList reloadData];

[unarchiver finishDecoding];
[unarchiver release];
[data release];


}

1 ответ

Решение

--- код был сбой, потому что у меня было

[выпуск данных];

Я нашел это с помощью инструмента инструментов.

Другие вопросы по тегам