2015-07-21 2 views
0

У меня есть это на верхней части моей программы:Добавляя данные в виде строки без потери предыдущих данных

@property (strong, nonatomic) NSMutableData   *data; 

Я думал, что это позволило бы мне хранить значение от каждого раза, когда этот метод работает:

- (void)peripheralManager:(CBPeripheralManager *)peripheral didReceiveWriteRequests:(NSArray *)requests 
{ 
    for (CBATTRequest *request in requests) { 
     NSString *stringValue = [[NSString alloc] initWithData: [request value] encoding:NSUTF8StringEncoding]; 



    // Have we got everything we need? 
    if ([stringValue isEqualToString:@"EOM"]) { 

     // We have, so show the data, 
     [self.textview setText:[[NSString alloc] initWithData:self.data encoding:NSUTF8StringEncoding]]; 


    } 

    // Otherwise, just add the data on to what we already have 
    [self.data appendData:[request value]]; 


} 

}

Этот метод ожидает запроса на запись, чтобы получить и сохраняет значение в строке. У меня есть центральный центральный процессор bluetooth, который отправляет три блока данных. Это необходимо для ограничения размера передачи данных в bluetooth LE. Проблема в том, что я не могу сохранить эти три значения. Я пытаюсь не просто сохранить последнее значение, но добавлять новое значение в конец nsstring или nssdata каждый раз при вызове метода. Любая помощь будет принята с благодарностью. Я думал, что свойство наверху позволит мне это сделать, но оно либо сохраняет последнее значение, либо ничего вообще. Я еще не привык к способам объективного с. Благодарю.

Даже это ничего не пишет self.data:

NSString * result = [[requests valueForKey:@"value"] componentsJoinedByString:@""]; 
NSData* data = [result dataUsingEncoding:NSUTF8StringEncoding]; 


[self.data appendData:data]; 

// Log it 
NSLog(@"%@",self.data); 

ответ

0

Помните, что дети, имеющие дело с NSMutableData, всегда инициализируем его!

_data = [[NSMutableData alloc] init]; 

Это устранило проблему null для меня.

0

Вы должны использовать NSMutableArray вместо NSString как изменяемые строки.

+0

Да, я действительно пробовал что-то похожее на это. Но после того, как он попробовал это, он просто плюнул. Я добавил этот журнал: NSLog (@ "% @", self.data); , и никакие данные не попадают в self.data, так что он всего лишь три раза в журнале, каждый раз при запуске метода. – domsl

+0

nevermind Я забыл инициализировать изменяемый тип. Спасибо за помощь. – domsl

+0

Помогло ли решение решить вашу проблему? Если да, пожалуйста, отметьте как ответ, так что кто-нибудь еще увидит, что этому поможет ваш вопрос. : D @domsl – ronan

Смежные вопросы