1

所以我一直在尝试对此进行测试;基本上我有一个名为 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++;
        }
    }
4

2 回答 2

0

是的,如果你想比较 2 个字符串,你应该使用 isEqualToString,因为 == 比较变量的指针值。所以这是错误的:

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

你应该写:

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

于 2011-10-02T22:10:21.107 回答
0

如果您检查控制台日志,您可能会看到类似“stringValue sent to object (NSString) that do respond”(或那些效果)之类的东西。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];
        }
    }
}
于 2011-10-02T22:12:30.710 回答