С кодом, который вы предоставили, не так много проблем. Я использую поле для ответов, потому что здесь недостаточно места для комментария:
Что касается объявлений переменных:
NSDate *date;
NSNumber *number;
NSString *desc;
Вы правильно объявили их, но не инициализировали их. Как они есть, они могут указывать на любой случайный мусор. Это означает, что ваш тест в конце цикла & hellip;
if (!date && !number && !desc) {
...do something...
}
& hellip; фактически может выполняться всегда, потому что date
, number
и desc
всегда могут быть ненулевыми (я говорю , может , потому что на самом деле не определено, являются ли они нулевыми или ненулевыми). нуль). Инициализируйте каждый из них на nil
, если вы планируете определить, установлены они или нет:
NSDate *date = nil;
NSNumber *number = nil;
NSString *desc = nil;
Не всегда необходимо инициализировать переменные (например, если вы пишете в него, прежде чем читать из него, нет необходимости инициализировать его), однако некоторые люди продвигают идею инициализации всех переменных, чтобы предотвратить это. неопределенное поведение от всплытия (обычно я инициализирую все переменные, даже если я перезаписываю инициализированное значение в любом случае).
Также есть переменная с именем linesubstring
, но она нигде не объявлена в коде, аналогично strDate
, strValue
также нигде не объявлены. Важно знать, как они объявлены и как они используются, поскольку они могут аналогичным образом указывать на мусор.