iPhone NSMutableDictionary setObject forKey после initWithContentsOfFile - PullRequest
0 голосов
/ 01 января 2011

так вот моя функция

+ (void) AddAddress:(NSString*)ip:(NSString*)mac {
    NSMutableDictionary* currentAddresses = [[NSMutableDictionary alloc] initWithContentsOfFile:[self filePath:ADDRESSES_FILE]];
    [currentAddresses setObject:mac forKey:ip];
    [Configuration Write:currentAddresses];
    [currentAddresses release];
}

[self filePath: ADDRESSES_FILE] возвращает строку, содержащую полный путь к файлу (ADDRESSES_FILE), расположенному в Documents.Файл может не существовать, в этом случае я хочу просто записать объект в словарь, а затем записать его

проблема в том, что когда я делаю setObject forKey, он ничего не добавляет к диктовке (еслия просто делю init init для dict, все работает нормально, но я хочу прочитать записи из файла, если они есть, и заменить / добавить запись с помощью функции AddAddress)

1 Ответ

2 голосов
/ 01 января 2011

Прежде всего, вы бы предпочли соблюдать соглашение об именах ObjC, чтобы его было легче понять ... Например, имена методов начинаются с небольшого регистра, и лучше ставить описательное имя перед двоеточиями для каждого аргумента название метода вот так: AddAddress:: не очень хорошо ...

Теперь, что касается загрузки словаря из файла, дело в том, что если файл не может быть загружен (не существует, неправильный формат, ...), возвращаемый объект будет нулевым, самый простой способ правильно то есть поставить:

if(currentAddresses == nil) currentAddresses = [[NSMutableDictionary alloc] init];
...