1

我正在开发一个小应用程序,用户通过 iTunes 将 csv 文件上传到应用程序中的文档文件夹。我正在使用以下代码,但它只检查第一行的第一列。它不检查第二行列。我的 csv 文件每个包含 2 行和 4 列。第一列是一个数字。用户将在文本框中键入此号码并单击按钮以检查该号码是否在 csv 文件中。以下功能是我正在使用的功能

-(void)CheckEntry //this function checks the example.csv file
{
    NSArray *DocumentPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *DocumentDirectory = [DocumentPath objectAtIndex:0];

    NSString *FullPath = [DocumentDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"example.csv"]];

    NSString * pstrCSVFile= [NSString stringWithContentsOfFile:FullPath encoding:NSASCIIStringEncoding error:NULL];

    NSArray * paRowsOfCSVFile= [pstrCSVFile componentsSeparatedByString:@"\r\n"];

    NSArray *paColumnsOfRow;
    NSString *pstrFirstColumn;
    for(NSString * pstrRow in paRowsOfCSVFile)
    {
        paColumnsOfRow= [pstrRow componentsSeparatedByString:@","];
        pstrFirstColumn= [paColumnsOfRow objectAtIndex:0];

        if([pstrFirstColumn localizedCaseInsensitiveCompare:GWIDText.text] == NSOrderedSame)
        {
            NSString *msg = [NSString stringWithFormat:@"The record was found"];
            UIAlertView *alertingFileName = [[UIAlertView alloc]initWithTitle:msg message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
            [alertingFileName show];
        }
        else
        {
            NSString *msg = [NSString stringWithFormat:@"Not Found"];
            UIAlertView *alertingFileName = [[UIAlertView alloc]initWithTitle:msg message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
            [alertingFileName show];
        }
    }

}
4

2 回答 2

0

您正在尝试在循环内显示警报视图。因此,您最终会尝试显示与行数一样多的警报视图。这不太可能是你想要的。你的要求不清楚。你想检查所有行的所有列,只检查所有行的第一列,还是简单地找到第一个匹配项并停止?

在循环之前创建一个 BOOL 变量。类似的东西BOOL found = NO;。然后在循环中,找到匹配项时将变量设置为 YES。然后,在循环之后,根据found变量显示适当的警报。确切的解决方案实际上取决于您在这里的真实意图。

于 2012-10-22T02:07:05.100 回答
0

尝试使用 componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet] 而不是 componentsSeparatedByString: 看看是否有帮助。

于 2012-10-22T04:15:17.333 回答