1
我在保存到我的iPad應用程序的NSApplicationSupportDirectory時遇到了一個奇怪的問題。將問題保存到NSApplicationSupportDirectory
我一直在使用這個數據結構很長一段時間沒有問題,它只出現在程序的前兩個負載。
第一次打開應用程序時,我從mainBundle打開一個文件,並將其重新保存爲默認設置文件,然後用它來存儲應用程序中設置的任何更改。
第二次打開應用程序,該文件似乎還沒有存在,所以它再次創建它!第三次和以後,一切都很好。我無法弄清楚它爲什麼不是第一次保存它。
對不起,如果這是混亂 - 它是數百頁的代碼的一部分!
這裏是我的初始化:
///inside the init of the object
NSFileManager* fileManager = [[NSFileManager alloc] init];
NSError* err = nil;
NSURL* dir = [fileManager URLForDirectory:NSApplicationSupportDirectory
inDomain:NSUserDomainMask
appropriateForURL:nil
create:YES
error:&err];
if (err) {
NSLog(@"error finding app support directory %@", err);
}
currentSettingsURL = [NSURL URLWithString:kCurrentSettingsFilename relativeToURL:dir];
if(![fileManager fileExistsAtPath:[currentSettingsURL path]])[self createDefaultFile];
NSArray* files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[dir path] error:&err];
NSLog(@"files %@", files);
其中,如果不存在,該文件被創建。
-(void)createDefaultFile{
NSURL* readURL = [[NSBundle mainBundle] URLForResource:@"smooth" withExtension:nil];
NSMutableData* tempData = [NSMutableData dataWithContentsOfURL:readURL];
NSKeyedUnarchiver* unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:tempData];
///re archive
[self setCurrentPresets:[unarchiver decodeObjectForKey:@"presetData"]];
}
-(void)setCurrentPresets:(NSMutableArray*)presets{
currentPresets = presets;
[self saveCurrentSettings];
}
這裏是保存文件
-(void)saveCurrentSettings{
data = [[NSMutableData alloc] init];
NSKeyedArchiver* archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:currentPresets forKey:kCurrentSettingsFilename];
[archiver finishEncoding];
if(![data writeToURL:currentSettingsURL atomically:YES])NSLog(@"error saving file");
}