XCode: проверка и назначение значений разделенной строки для textField - PullRequest
1 голос
/ 03 октября 2011

Итак, я пытался проверить это; в основном у меня есть текстовый файл с именем rawData.txt, он выглядит так:

    060315512 Name Lastname
    050273616 Name LastName

Я хотел разделить строки, а затем разделить каждую отдельную строку и проверить первую часть (с 9 цифрами), но, похоже, он не работает вообще (мое окно закрывается). Есть ли проблемы с этим кодом?

    NSString *path = [[NSBundle mainBundle] pathForResource: @"rawData" ofType:@"txt"];
    if (path)
    {
        NSString *textFile = [NSString stringWithContentsOfFile:path]; 
        NSArray *lines = [textFile componentsSeparatedByString:(@"\n")];
        NSArray *line;
        int i = 0;
        while (i < [lines count])
        {
            line = [[lines objectAtIndex:i] componentsSeparatedByString:(@" ")];
            if ([[line objectAtIndex:0] stringValue] == @"060315512")
            {
                idText.text = [[line objectAtIndex: 0] stringValue];    
            }
            i++;
        }
    }

Ответы [ 2 ]

0 голосов
/ 03 октября 2011

Если вы проверите свой консольный журнал, вы, вероятно, увидите что-то вроде «stringValue, отправленного объекту (NSString), который действительно отвечает» (или эти эффекты). line - это массив строк, поэтому [[line objectAtIndex:0] stringValue] пытается вызвать -[NSString stringValue], который не существует.

Ты имеешь в виду нечто подобное:

NSString *path = [[NSBundle mainBundle] pathForResource: @"rawData" ofType:@"txt"];
if (path)
{
    NSString *textFile = [NSString stringWithContentsOfFile:path]; 
    NSArray *lines = [textFile componentsSeparatedByString:@"\n"];
    for (NSString *line in lines)
    {
        NSArray *columns = [line componentsSeparatedByString:@" "];
        if ([[columns objectAtIndex:0] isEqualToString:@"060315512"])
        {
            idText.text = [columns objectAtIndex:0];
        }
    }
}
0 голосов
/ 03 октября 2011

Да, если вы хотите сравнить 2 строки, вы должны использовать isEqualToString, поскольку == сравнивает значение указателя переменных. Так что это неправильно:

if ([[line objectAtIndex: 0] stringValue] == @ "060315512")

Вы должны написать:

if ([[[line objectAtIndex: 0] stringValue] isEqualToString: @ "060315512"])

...