-1

私はviewController人々がいくつかを記入する必要がある場所を持っていtextfieldsます。緑色のスポットをタップすると、別のビューに移動して簡単な署名を作成し、戻ってきます。

ここに画像の説明を入力

私がここで抱えている問題は、ユーザーがその後戻ってきたときに署名を入力したことです。テキストフィールドの値がなくなりました。

ご覧のように、* が付いたテキストフィールドのみが義務付けられています。これらの値を に入れてNSDictionaryに保存しようとしましたNSUserdefaults。しかし、すべてのテキストフィールドを埋めないと、このエラーが発生します。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: naam)'

この問題を解決する最善の方法は何ですか?

4

8 に答える 8

1

そのキーが存在するかどうかを次のように確認できます。

    NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];

    if ([defs objectForKey:@"naam"]) // Here it is YES if the key naam exists else no
    {
       // Key naam does exists
       // set that value in textfield
    }
    else
    {
    // Key naam does not exist
    }

お役に立てば幸いです。

于 2013-05-08T06:42:53.277 に答える
1

reason: ' * setObjectForKey: オブジェクトを nil にすることはできません (キー: naam)'

説明:NULLに値を設定することはできませんNSDictionary

回答 :textField値がの場合、に"" (空の値)NULL格納してみてください。NSDictionary

次のようにチェックを実行します。

if ([textField.text isEqualToString:@""] || textField.text.length == 0)
{
     [yourDict setObject:@"" forKey:@"someKey"];
}
于 2013-05-08T06:41:32.307 に答える
0

通常、viewController を他の viewController にプッシュ/提示し、Controller をプッシュしたものを pop/dimiss すると、通常、ViewWillAppear に何かを書き込むまで、テキストフィールドの値は変更されません...

これはあってはならないことです!! 一般的

于 2013-05-08T07:05:30.260 に答える
0
  1. シングルトン クラスを作成します。
  2. そこに値を入れてください(値がゼロの場合は、その値に「」を入力してください)
  3. コントローラーに戻ったら、値をフェッチします。
于 2013-05-08T06:44:52.423 に答える
0

その場合、辞書に NULL 値を設定しようとすると、このエラーが発生します。だから、これを使ってみてください.そして、すべてのテキストフィールドに対してこのようにする必要があります

if (naamTextField.text.lenght == 0)
     [dic setValue:@"" forKey:@"NAAM"];
else
     [dic setValue:naamTextField.text forKey:@"NAAM"];
if (emailTextField.text.lenght == 0)
     [dic setValue:@"" forKey:@"EMAIL"];
else
     [dic setValue:emailTextField.text forKey:@"EMAIL"];
于 2013-05-08T06:46:16.683 に答える
0

値を持つテキストフィールドのみを保存します。

-(void)textFieldDidEndEditing:(UITextField *)textField{
    NSMutableDictionary *dictionary = [NSMutableDictionary new];
    if(textField.text.length > 0){
      [dictionary setObject:textField.text forKey:@"<somekey>"];

      NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
      [defaults setObject:dictionary forKey:@"<defaultKey>"];
      [defaults synchronize];
   }

}

そして、あなたのviewDidAppearでは、デフォルトから辞書を読み込んで表示するだけです

于 2013-05-08T07:01:56.513 に答える