我目前正在开发一个小型且特定的 iPhone 应用程序来连接到服务器并下载一些 JSON 数据。我的问题是关于我用来保存一些数据(服务器的登录名、密码和域)的属性列表。我在 Xcode 中轻松创建了 plist,但是当我尝试使用用户输入的文本对其进行编辑时,我遇到了问题,我不知道如何解决它......
这是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。我试图放反斜杠,但这没有帮助。
我能做些什么来解决这个错误?