gpt4 book ai didi

ios - 保存到 NSApplicationSupportDirectory 的问题

转载 作者:行者123 更新时间:2023-11-29 13:31:06 36 4
gpt4 key购买 nike

我在 iPad 应用程序上保存到 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");

}

最佳答案

我只需要告诉它我的 NSApplicationSupportDirectory 是一个文件夹..

NSURL* dir = [fileManager URLForDirectory:NSApplicationSupportDirectory 
inDomain:NSUserDomainMask
appropriateForURL:nil
create:YES
error:&err];
if (err) {
NSLog(@"error finding app support directory %@", err);
}

NSURL* folder = [[NSURL alloc] initFileURLWithPath:[dir path] isDirectory:YES];
currentSettingsURL = [NSURL URLWithString:kCurrentSettingsFilename relativeToURL:folder];

关于ios - 保存到 NSApplicationSupportDirectory 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11889813/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com