2

我目前正在开发一个小型且特定的 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。我试图放反斜杠,但这没有帮助。

我能做些什么来解决这个错误?

4

1 回答 1

0

如果您在字符串中有任何参数,StringWithFormat 将使用,因此您可以直接分配字符串值,就像这样

NSString *domain = self.domainTextField.text;
于 2012-11-07T21:46:17.663 回答