Как добавить каждый символ NSString в NSArray? - PullRequest
4 голосов
/ 19 июня 2011

Я ищу способ передать NSString, которая содержит 4 символа, которые в целом представляют собой 4-значное число, например, 0741, я искал и продолжаю сталкиваться с этой функцией... что я могу сделать, если мои компоненты не разделены?

Что ж, после проверки ссылки, размещенной ниже, я нашел NSRange и сумел заставить его работать с этим решением, как показано ниже, однако он выглядит немного растянутым и, возможно, более громоздким, чем нужно ... дай мне знать, что ты думаешь и какие улучшения я могу сделать.

NSRange MyOneRange = {0, 1};
    NSRange MyTwoRange = {1, 1};
    NSRange MyThreeRange = {2, 1};
    NSRange MyFourRange = {3, 1};

    NSString *firstCharacter = [[NSString alloc] init];
    NSString *secondCharacter = [[NSString alloc] init];
    NSString *thridCharacter = [[NSString alloc] init];
    NSString *fourthCharacter = [[NSString alloc] init];

    firstCharacter = [myFormattedString substringWithRange:MyOneRange];
    secondCharacter = [myFormattedString substringWithRange:MyTwoRange];
    thridCharacter = [myFormattedString substringWithRange:MyThreeRange];
    fourthCharacter = [myFormattedString substringWithRange:MyFourRange];


    NSLog(@"%@, %@, %@, %@", firstCharacter, secondCharacter, thridCharacter, fourthCharacter);

Ответы [ 3 ]

10 голосов
/ 19 июня 2011

Чтобы импровизировать на вашем подходе,

NSRange theRange = {0, 1};
NSMutableArray * array = [NSMutableArray array];
for ( NSInteger i = 0; i < [myFormattedString length]; i++) {
    theRange.location = i;
    [array addObject:[myFormattedString substringWithRange:theRange]];
}
2 голосов
/ 19 июня 2011

У вас есть много вариантов ... для начала есть метод - (unichar)characterAtIndex. Я предлагаю прочитать документацию NSString (есть раздел методов, называемых «Получение символов и байтов»).

1 голос
/ 19 июня 2011

Что-то вроде этого должно работать хорошо:

NSString *dataString = @"0741";
NSMutableArray *characters = [[NSMutableArray alloc] initWithCapacity:[dataString length]];
for (int i = 0; i < [dataString length]; i++) {
    NSString *singleCharacter  = [NSString stringWithFormat:@"%c", [dataString characterAtIndex:i]];
    [characters addObject:singleCharacter];
}
...