我有一个解析小文本文件的方法(下面的代码是一个简化版本):
- (void)parseFile:(NSString *)aFile
{
NSDate *date;
NSNumber *number;
NSString *desc;
NSString *txt = [NSString stringWithContentsOfFile:aFile encoding:NSUTF8StringEncoding error:nil];
for (NSString *line in [txt componentsSeparatedByString:@"\n"]) {
if ([linesubstring isEqual:@"mydate"]) {
date = [dateFormat dateFromString:strDate];
}
if ([linesubstring isEqual:@"mynumber"]) {
number = [numberFormat numberFromString:strValue];
}
if ([linesubstring isEqual:@"mydesc"]) {
desc = [line substringWithRange:NSMakeRange(0, 10)];
}
if (!date && !number && !desc) {
...do something...
}
}
}
第一个问题是date
变量被参数的内容填充aFile
。它只假设它是正确的值,当它通过第一个 if/check 时。
所以为什么?我虽然这date
可能是一个保留字并交换了它,但具有相同的行为。
第二个问题是最后一个 if(嵌套的)。调试代码,我可以看到 xcode 将其显示为“超出范围”,但!number
失败(xcode 认为它是有效的)...
我尝试了其他组合,比如[number isNotEqualTo:[NSNull null]]
(这个会引发错误 EXC_BAD_ACCESS),但没有成功。
拜托,有人能给点提示吗?我是可可/objective-c 的新手。我来自java...
TIA,
鲍勃