次のコードは、CSVファイル内のcell.textlabel.textで指定された文字列を検索しようとします
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
//create singleton instance
Globals *myGlobals = [Globals sharedGlobals];
//get searchstring form cell
NSString *stringToFind = [self.tableView cellForRowAtIndexPath:indexPath].textLabel.text;
//get Path of csv and write data in string:allLines
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"ITILcsv" ofType:@"txt"];
if(filePath){
NSString *wholeCSV = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
NSArray *allLines = [wholeCSV componentsSeparatedByString:@"\n"];
//declaration
NSArray *currentArray = nil;
NSString *currentSearchString = nil;
//look for searchstring in 4th line of csv, if found write whole line to a singleton-variable
for (int i=0 ; i < [allLines count]; i++){
currentArray = [[allLines objectAtIndex:i] componentsSeparatedByString:@";"];
currentSearchString = [currentArray objectAtIndex:3];
if ([stringToFind isEqualToString:currentSearchString]){
[myGlobals setCurrentLine:currentArray];
}
}
}
私の現在のプロジェクトでcsvファイルをかなり使用すると、これは機能するはずですが、関数が呼び出されると、どういうわけかアプリが常にクラッシュします。
たくさんのテストを通して、問題は次の行にあると確信しています。
currentArray = [[allLines objectAtIndex:i] componentsSeparatedByString:@";"];
currentSearchString = [currentArray objectAtIndex:3];
プログラムはコメントアウトされたこれらの2行で動作しますが、目的の機能を実装していません;)問題が何であるかわかりませんか?
エラーは「メイン」のSIGABRTです。
みなさん、よろしくお願いします。