Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 从NSMutableArray读取时,即使项目2存在异常,也会引发异常_Iphone_Ios_Objective C - Fatal编程技术网

Iphone 从NSMutableArray读取时,即使项目2存在异常,也会引发异常

Iphone 从NSMutableArray读取时,即使项目2存在异常,也会引发异常,iphone,ios,objective-c,Iphone,Ios,Objective C,我有一个文件,里面有一堆字符串,如下所示: item1,01-SR,admin,Missing or broken,undefined, 16/04/2013 18:10:10; item1,03-SR,admin,In Use,undefined, 16/04/2013 18:10:34; item1,01-SR,admin,In Use,undefined, 16/04/2013 18:10:45; item1,02-SR,admin,In Use,undefined, 16/04/

我有一个文件,里面有一堆字符串,如下所示:

 item1,01-SR,admin,Missing or broken,undefined, 16/04/2013 18:10:10;
 item1,03-SR,admin,In Use,undefined, 16/04/2013 18:10:34;
 item1,01-SR,admin,In Use,undefined, 16/04/2013 18:10:45;
 item1,02-SR,admin,In Use,undefined, 16/04/2013 18:10:49;
 item1,05,admin,In Use,undefined, 16/04/2013 18:10:56;
我在读字符串,然后把它们分开,这样我一次只得到一个字符串。然后我想再次拆分得到的字符串,这样每个CSV都是它自己的变量。我曾经这样尝试过(numLines是文件中行数的计数):

正确返回6。然后我想检查它是否可以从数组中读取另一项,所以我做了:

 NSString *tstamp1 = [[inditems lastObject] copy];
正确记录后,将返回时间戳,如下所示:

 16/04/2013 18:10:10
所以我想“哦,至少第5项有效”,然后试着得到那项:

 while (count1 < numLines) {
      NSString *message = [[strings objectAtIndex: count1] copy];

      NSMutableArray *items = [[fileContents componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@";"]] mutableCopy];

      NSString *items1 = [[items objectAtIndex: count1] copy];

      NSLog(@"items: %@", items1);

      NSMutableArray *inditems = [[items1 componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@","]] mutableCopy];

      NSString * item1 = inditems[0];
      NSString * bnum1 = inditems[1];
      NSString * tstamp1 = inditems[5];

      NSLog(@"item: %@", item1);
      NSLog(@"bnum: %@", bnum1);
      NSLog(@"tstamp: %@", tstamp1);

      count1++;
}
while(count1
但这也引发了一个例外!我可能在做一些愚蠢的事情,但我会感激任何帮助


谢谢

我猜您的NSArray*字符串中包含了导致错误的空值。你需要先检查它,然后再做你的逻辑

//path is your file path
NSString* fileContents = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSArray *strings = [fileContents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
for (int i = 0; i < [strings count]; i++){
   if (![[strings objectAtIndex:i] isEqualToString:@""]){
   //Here do your code...
   }
}
//路径是您的文件路径
NSString*fileContents=[NSString stringWithContentsOfFile:路径编码:NSUTF8StringEncoding错误:nil];
NSArray*strings=[fileContents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
对于(int i=0;i<[字符串计数];i++){
if(![[strings objectAtIndex:i]IsequalString:@“”){
//这是你的代码。。。
}
}

n记录您的项目,我想其中有一项是空白的。如上所述,您唯一没有做的事情是在访问数组[n]时检查数组是否包含n+1个子项,您确实应该这样做。另外,如果这是生产代码,我会将文件解析移出while循环。顺便问一下,如何获取字符串?是否使用[fileContents Components由字符分隔的集合:[NSCharacterSet newlineCharacterSet]]?然后你需要检查是否有空白字段。是的,不知怎么的,我想我有一个额外的逗号,这意味着确实有一个空白字段,因为在我重新创建数据文件后,它开始工作。谢谢你们的帮助,伙计们。
 while (count1 < numLines) {
      NSString *message = [[strings objectAtIndex: count1] copy];

      NSMutableArray *items = [[fileContents componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@";"]] mutableCopy];

      NSString *items1 = [[items objectAtIndex: count1] copy];

      NSLog(@"items: %@", items1);

      NSMutableArray *inditems = [[items1 componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@","]] mutableCopy];

      NSString * item1 = inditems[0];
      NSString * bnum1 = inditems[1];
      NSString * tstamp1 = inditems[5];

      NSLog(@"item: %@", item1);
      NSLog(@"bnum: %@", bnum1);
      NSLog(@"tstamp: %@", tstamp1);

      count1++;
}
//path is your file path
NSString* fileContents = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSArray *strings = [fileContents componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
for (int i = 0; i < [strings count]; i++){
   if (![[strings objectAtIndex:i] isEqualToString:@""]){
   //Here do your code...
   }
}