我正在构建一个应用程序,用户可以在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;
}
}
}
答案 0 :(得分:0)
如果第一个名称不匹配,您的其他语句似乎会突破 for 循环。如果找到匹配项,您可能需要删除它并可能添加一个变量来跟踪。只有在匹配名称时才设置它。在 for 循环后,检查变量以查看是否匹配。如果没有,则显示您的UIAlertView“未找到”。
答案 1 :(得分:0)
一些提示:
您正在检查一列。
if([pstrFirstColumn localizedCaseInsensitiveCompare:GWIDText.text] == NSOrderedSame)
对其他两列做同样的事情。然后,您将解决仅检查一列的第一个问题。