如何读取csv文件中的单独字段并与用户输入进行比较?

时间:2012-09-25 19:10:26

标签: ios xcode csv

我正在构建一个应用程序,用户可以在3个单独的列中上传包含名字,姓氏和电子邮件的csv文件。用户界面将有3个文本字段和一个按钮。当用户输入名字或姓氏或电子邮件,然后单击搜索按钮时,必须搜索整个文档并显示警告,说明该文件中已找到该记录。这是我正在使用的功能,但它只读取第一行和第一列。请帮忙

- (void) SearchStudent

{

    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:@"\n"];

    NSArray *paColumnsOfRow;

    NSString *pstrFirstColumn;



    for(NSString * pstrRow in paRowsOfCSVFile)

    {

        paColumnsOfRow= [pstrRow componentsSeparatedByString:@","];

        pstrFirstColumn= [paColumnsOfRow objectAtIndex:0];

        if([pstrFirstColumn localizedCaseInsensitiveCompare:GWIDText.text] == NSOrderedSame)

        {

            UIAlertView *alertingFileName = [[UIAlertView alloc]initWithTitle:@"Error" message:@"Found" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

            [alertingFileName show];

            break;

        }

        else

        {

            UIAlertView *alertingFileName1 = [[UIAlertView alloc]initWithTitle:@"Error" message:@"Not Found" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

            [alertingFileName1 show];

            break;

        }

    }


}

2 个答案:

答案 0 :(得分:0)

如果第一个名称不匹配,您的其他语句似乎会突破 for 循环。如果找到匹配项,您可能需要删除它并可能添加一个变量来跟踪。只有在匹配名称时才设置它。在 for 循环后,检查变量以查看是否匹配。如果没有,则显示您的UIAlertView“未找到”。

答案 1 :(得分:0)

一些提示:

  1. 您正在检查一列。

    if([pstrFirstColumn localizedCaseInsensitiveCompare:GWIDText.text] == NSOrderedSame)
    
  2. 对其他两列做同样的事情。然后,您将解决仅检查一列的第一个问题。

    1. 看起来行终止符不正确。根据csv文件的创建平台,它可能具有不同的行终止符。我建议使用像notepad ++这样的文本编辑器,并查看隐藏的代码以找出你的行终止符。然后使用终结符来分割行。确保你获得的行数超过1行(只输出行变量)。