Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 问题保存到NSApplicationSupportDirectory_Ios_Ipad_Nsfilemanager - Fatal编程技术网

Ios 问题保存到NSApplicationSupportDirectory

Ios 问题保存到NSApplicationSupportDirectory,ios,ipad,nsfilemanager,Ios,Ipad,Nsfilemanager,我在保存到iPad应用程序上的NSApplicationSupportDirectory时遇到了一个奇怪的问题 我已经使用这个数据结构很长时间了,没有任何问题,它只在程序的前两次加载期间出现 第一次打开应用程序时,我从mainBundle中打开一个文件,并将其重新保存为默认设置文件,然后使用该文件存储对应用程序中设置的任何更改 我第二次打开应用程序时,文件似乎还不存在,所以它再次创建了它!第三次之后,一切都很好。我不明白为什么它第一次不保存它 抱歉,如果这是混乱-这是数百页代码的一部分 以下是我

我在保存到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];