2013-08-14 2 views
0

Я пытаюсь создать NSData в зависимости от коммутатора, но у меня возникли проблемы с добавлением опций к методу appendBytes. Добавление NSString test дает мне ошибку.NSData appendBytes, добавление строки

Пример:

- (void)selectCenterJustification:(int)option 
{ 
    NSMutableData *data; 
    NSString *test; 
    switch (option) 
    { 
     case 0: 
      test = @"\x0"; 
      break; 
     case 1: 
      test = @"\x1"; 
      break; 
     case 2: 
      test = @"\x2"; 
      break; 
    } 
    // does not work because of "test" 
    [data appendBytes:"\x1b" "a", test length:3]; 

    // working 
    [data appendBytes:"\x1b" "a" "\x1" length:3]; 
} 

Любая идея, как я могу это сделать?

ответ

3
NSMutableData *data = [NSmutableData data]; 
NSString *test = nil; 

switch (option) { 
    case 0: 
     test = @"\x0"; 
     break; 
    case 1: 
     test = @"\x1"; 
     break; 
    case 2: 
     test = @"\x2"; 
     break; 
    default: 
     NSLog(@"[justification]: unknown option"); 
     break; 
} 
if (test) { 
    [data appendBytes:"\x1b" "a" length:2]; 
    [data appendBytes:[test cStringUsingEncoding:NSASCIIStringEncoding] length:1]; 
} 

Update

Оказывается, вам нужна строка C.

+1

убедитесь, что данные alloc-init перед попыткой добавить к нему –

+0

Обновлен мой ответ, хороший момент :-) – sbarow

+0

Проблема не в добавлении 'test', а в том, чтобы добавить ее вместе с другими данными. (см. править в исходном сообщении) – Gerdinando

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