Является ли метод, описанный ниже, приемлемым (т.е. передовым, не хакерским) способом обновления NSMutableDictionary?
По сути, я хочу, чтобы метод проверял, был ли словарь инициализирован / заполнен еще.Если это НЕ, тогда я хочу, чтобы он продолжал и заполнил его определенным набором iVars, который у меня есть, с соответствующим набором ключей.
Если он уже был инициализирован / заполнен, я хочу обновитьи я хотел избежать необходимости выписывать setObject:forKey:
для каждого элемента в dict.
Итак ...
- Is "Release"> "Set nil">«Повторно инициировать» приемлемый подход к обновлению этого словаря?
- Если это так, является ли способ only сделать это для словаря больших значений, если я не хочу повторять строку за строкойиз
setObject:forKey:
Спасибо!Код следующий:
- (void) populateFetchDataDict {
if (!self.fetchDataDict) {
self.fetchDataDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:object1, @"key1", object2, @"key2", object3, @"key3", object4, @"key4", nil];
} else {
[fetchDataDict release];
fetchDataDict = nil;
self.fetchDataDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys:object1, @"key1", object2, @"key2", object3, @"key3", object4, @"key4", nil];
}
}
Незначительные примечания:
fetchDataDict
- это iVar, как и все объекты, поэтому предположим, что object1
, object2
и т. Д.на самом деле было бы self.object1
, self.object2
... - Кроме того, я получил прямой доступ к
fetchDataDict
iVar для release
и nil
, поскольку я думал, что это то, что мы должны делать, но, пожалуйста, поправьте меня, если я ошибаюсь.
Этот вопрос сфокусирован на обучении, поэтому длинные объяснения приветствуются!