私は現在、サーバーに接続してJSONデータをダウンロードするための小さくて特定のiPhoneアプリに取り組んでいます。私の問題は、いくつかのデータ (サーバーのログイン、パスワード、およびドメイン) を保存するために使用するプロパティ リストに関するものです。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 にそれを書き込むことを期待しています :は NSStringdomain = "whateverthedomainis"
ですdomain
が、代わりに : を書き込みますdomain = whateverthedomainis
。writeToFile:atomically: メソッドは、すべてのオブジェクトがプロパティ リスト オブジェクトであることを確認するため、NO を返します。バックスラッシュを入れようとしましたが、役に立ちませんでした。
このエラーを解決するにはどうすればよいですか?