У меня есть метод (приведенный ниже код является упрощенной версией), который анализирует небольшие текстовые файлы:
- (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. Я пришел из Явы...
ТИА,
Боб
[myString isEqualToString:otherString]
, а неisEqual
. Я вообще не понимаю, что вы на самом деле пытаетесь сделать с кодом. Вы пытаетесь установить содержимое строки текста из вашего файла в соответствующий тип переменной? Действительно ли mydate, mynumber и mydesc находятся в текстовом файле? - person Matthew Frederick   schedule 13.12.2010