我目前正在开发一个小型的特定iPhone应用程序来连接服务器并下载一些JSON数据。我的问题是关于我用来保存一些数据(登录,密码和服务器域)的属性列表。我很容易在Xcode中创建了plist但是当我尝试使用用户输入的文本编辑它时,我遇到了问题,我不知道如何解决它......
这是textFieldDidEndEditing: method
,其中我尝试使用用户在domainTextField中编写的内容写入plist:
- (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。我试图把反斜杠,但这没有帮助。
我该怎么做才能解决此错误?
答案 0 :(得分:0)
如果字符串中有任何参数,StringWithFormat将使用,因此您可以直接指定字符串值,如下所示
NSString *domain = self.domainTextField.text;