0

実装で「saveState」メソッドを作成しようとしています(blablabla.m内):

-(void)saveState {
NSString *masterCode = [[NSString alloc] initWithString:first];
masterCode = [masterCode stringByAppendingString:second];
masterCode = [masterCode stringByAppendingString:third];
masterCode = [masterCode stringByAppendingString:fourth];
NSLog(@"master passcode - %@", masterCode);

NSString *plistPath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"timeLimiterMasterCode.plist"];

if (![[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
    [[NSFileManager defaultManager] createFileAtPath:plistPath contents:nil attributes:nil];
}

if ([[NSFileManager defaultManager] fileExistsAtPath:plistPath]) {
    NSLog(@"file exists, %@", plistPath);
}

NSMutableDictionary *plistCode = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath];

[plistCode setObject:masterCode forKey:@"MasterCode"];

NSLog(@"whole plist - %@", plistCode);

[plistCode writeToFile:plistPath atomically: YES];

NSLog(@"master passcode from file - %@", [plistCode objectForKey:@"MasterCode"]);

}

masterCode は nill ではありません。blablabla.h ファイルでは、プロトコル UIApplicationDelegate を使用しています。「ファイルが存在します」が、アプリケーションは次のように返します。 -29 12:19:50.500 timeLimiter[916:907] ファイルからのマスター パスコード - (null)

viewController (.m, .h) のほかに、別の plist と write メソッドを使用すると、正しく動作します。

[plistCode setObject:masterCode forKey:@"MasterCode"] が丘であることがわかりました。「masterCode」を @"test" に置き換えようとしましたが、意味がありませんでした。

私の問題を解決できますか?お願いします?

4

1 に答える 1

0

解決策を見つけましたが、説明がわかりません。解決策は置き換えることです

NSMutableDictionary *plistCode = [NSMutableDictionary dictionaryWithContentsOfFile:plistPath] 

NSMutableDictionary *newPlistCode = [[NSMutableDictionary alloc] init]. 

その後、この方法はうまくいきます!initに感謝します)

于 2013-01-29T09:53:09.797 に答える