Обработка возможной нулевой даты из массива объектов из БД, которые могут возвращать дату - PullRequest
0 голосов
/ 25 января 2019

Я новичок в задаче c, и мне была предоставлена ​​существующая внешняя база кода, поэтому я прошу прощения, если я упустил что-то очень очевидное!

У меня есть модель данных цели, в которую я добавил дату: GoalDataModel

При отправке запроса в базу данных для массива целей возвращается следующее: GoalArray

Как видите, один из элементов массива возвращает дополнительный KVP, который является типом даты, который я ранее добавил в xcdatamodel. Эта дата относится к дате достижения цели. Goal

При итерации по этому массиву в цикле for и проверке, не является ли дата KVP не равной nil, возвращается NULL для объекта, для которого существует дата:

([[self.goalArray objectAtIndex:i] valueForKey:@"date"] != nil) ?
[[self.goalArray objectAtIndex:i] valueForKey:@"date"] : [NSNull null]

Однако другие значения в объекте, использующие то же выражение выше со своими ключами, возвращают ожидаемые значения: ArrayReturn

Стоит отметить, что для запуска приложения я изменяю дату xcdatamodel на строковое значение, а не дату для целей тестирования.

Я также добавил это к модели цели:

@synthesize date;
...
-(NSDate*) date {
    return date;
}

-(void) setDate:(NSDate*)DateTime {
    date = DateTime;
}

Есть ли что-то очевидное, что я упускаю, потому что я нахожусь в тупике? Я снова прошу прощения, если это плохой вопрос. Я не могу найти никаких подсказок относительно того, как обращаться с объектами, которые могут возвращать или не возвращать определенный KVP

.

1 Ответ

0 голосов
/ 25 января 2019

Вы, вероятно, должны использовать objectForKey:, это функция NSDictionary.valueForKey: в основном работает с любым классом и возвращает значение и / или результат функции на основе ключа, который вы передаете.

Я могу представить, что при запросе даты происходит что-то странное.

Ваш код должен выглядеть примерно так:

NSDictionary *goalInfo = self.goalArray[i];
//goalInfo[@"date"] - This is the short, and more readable version of 'objectForKey:'

if (goalInfo && goalInfo[@"date"]) {
  return goalInfo[@"date"];
}
else {
  return [NSNull null];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...