-1

NSUserDefaults に文字列を書き込みます

[[NSUserDefaults standardUserDefaults] setObject: myString forKey: @ "String"];

次に、この文字列を NSUserDefaults から取り出して返します

- (NSString *) retrieveString
{
     NSString * recoveredString = [[NSUserDefaults standardUserDefaults] objectForKey: @ "String"];
     return recoveredString;
}

次に、viewDidLoad で、返された文字列を別の文字列に書き込みます

NSString * filePath = [self retrieveString];

- (NSString *) retrievestring で彼女に戻った後、NSUserDefaults の文字列を削除する必要があります。

私はそうします

    - (NSString *) retrieveString
        {
             NSString * recoveredString = [[NSUserDefaults standardUserDefaults] objectForKey: @ "String"];
             [[NSUserDefaults standardUserDefaults] removeObjectForKey: @ "String"];
             return recoveredString;

        }

しかし、これは機能しません。行は削除されません。修正方法

ありがとうございます。

4

2 に答える 2

0

synchronize呼び出しを追加し、戻り呼び出しを移動する必要があります (したがって、メソッドの最後の行になります)。したがって、コードは次のようになります。

- (NSString *) retrieveString
{
    NSString * recoveredString = [NSString stringWithString:[[NSUserDefaults standardUserDefaults] objectForKey: @ "String"]];
    [[NSUserDefaults standardUserDefaults] removeObjectForKey: @ "String"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    return recoveredString;
}
于 2012-11-03T17:12:57.437 に答える
0

NSUserDefaultsセッターまたはゲッターが呼び出されるたびにではなく、定期的にのみデータを更新します。すぐに更新したい場合は、電話してください

[[NSUserDefaults standardUserDefaults] synchronize];
于 2012-11-03T16:47:24.723 に答える