В настоящее время я работаю над небольшим и конкретным приложением для iPhone, чтобы подключиться к серверу и загрузить некоторые данные JSON. Моя проблема связана с списком свойств, который я использую для сохранения некоторых данных (логин, пароль и домен сервера). Я легко создал plist в Xcode, но когда я пытаюсь отредактировать его с текстами, введенными пользователем, у меня возникла проблема, и я не знаю, как это исправить ...setValue: forKey: с NSString
textFieldDidEndEditing: method
, в которой я стараюсь писать в PLIST, с тем, что пользователь написал в domainTextField:
- (void)textFieldDidEndEditing:(UITextField *)textField
{
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
NSString *filepath = [NSString stringWithFormat:@"%@/userInfo.plist", [paths objectAtIndex:0]];
NSMutableDictionary *userInfo = [[NSMutableDictionary alloc] initWithContentsOfFile:filepath];
if (self.domainTextField) {
NSString *domain = [NSString stringWithFormat:@"%@", self.domainTextField.text];
[userInfo setValue:domain forKey:@"domain"];
}
if ([userInfo writeToFile:filepath atomically:TRUE]) {
NSLog(@"write succeeded");
} else {
NSLog(@"write failed");
}
}
Я всегда получать «ошибка записи» ошибка здесь и поиграв немного с отладчиком, Я обнаружил, что проблема связана с setValue:forKey: method
. Фактически, я ожидаю, что этот метод напишет, что в plist: domain = "whateverthedomainis"
, потому что domain
является NSString, но вместо этого он пишет: domain = whateverthedomainis
. И поскольку метод writeToFile: atomically: гарантирует, что все объекты являются объектами списка свойств, он возвращает NO. Я попытался поместить обратную косую черту, но это не помогло.
Что можно сделать, чтобы устранить эту ошибку?
Я думаю, что вам может понадобиться, чтобы избежали этой строки, я хотел бы использовать метод бинарного экономии вместо plist one –
Спасибо за ваш комментарий. Я попробую двоичный метод, но я был бы удивлен, что они не могут сделать это без двоичного кода. – user1796616
Попробовали ли вы вместо этого использовать метод 'NSMutableDictionary'' setObject: forKey: 'вместо кода Key-Value-Coding? – trojanfoe