私は数年前にObj Cで開発されたアプリを持っています。 NSUserDefaultsを使用して次のように表示するデータを作成しました。NSUserDefaultsが古いバージョンのアプリケーションで使用されていたかどうかを確認する
NSUserDefaults *userData = [NSUserDefaults standardUserDefaults];
if ([userData objectForKey:@"personDataArray"]==nil)
{
mutableDataArray = [[NSMutableArray alloc] init];
}
else
{
// get the array back out of NSUserDefaults
NSArray *tempArray = [userData objectForKey:@"personDataArray"];
// NSLog(@"The count in the temp saved data is %lu", (unsigned long)tempArray.count);
// look for any NSData objects in my temp array
for (NSData *personData in tempArray)
{
// set a instance of the person class to each NSData object found in the temp array
GD_Owed_Person *personObject = [[GD_Owed_Person alloc] init];
personObject = [NSKeyedUnarchiver unarchiveObjectWithData:personData];
// NSLog(@"CHECK ON THE ARRAY %@", personObject.personsBillsArray);
[mutableDataArray addObject:personObject];
}
}
デフォルトの名前はpersonDataArrayです。
新しいバージョンのアプリ(Swift 3)では、古いデフォルトを使用したいと考えています。私が抱えている問題は、それらのデフォルトが存在するかどうかを確認するときにチェックして、私が間違っていることです。
print(UserDefaults.standard.bool(forKey:"personDataArray"))
ここでは、上記のprint文でfalseを生成する手順を示します。
- アプリをテスト用iPhoneにダウンロードしてください。
- ユーザーデータを入力して保存してください。
- テスト用iPhoneでXcode経由で新しいアプリを実行します。
- 新しいアプリは古いアプリをインストールして更新します。
- 私は私が何をしないのですNSUserDefaults
内部personDataArrayをチェックしたときに印刷するにはfalseを返しますか?