Когда пользователь впервые использует мое приложение, оно должно скопировать файл конфигурации из пакета в какую-то папку.Затем пользователь может поиграть с этим файлом, и если он испортит его, он может просто нажать «восстановить», чтобы удалить файл и снова скопировать его из пакета.
- (void) resetPresets
{
LOG_( @"Copying tunings file from original..." );
// copy default tunings -> curr tunings file
NSString* appSupportDir = [NSFileManager appSupportDir];
NSString* tuningsPath = [appSupportDir stringByAppendingPathComponent: @"tunings.txt"];
NSBundle* bundle = [NSBundle mainBundle];
NSString* origTuningsPath = [bundle pathForResource: @"tuningsOriginal"
ofType: @"txt" ];
NSFileManager* fileManager = [NSFileManager defaultManager];
NSError* error = nil;
if( [fileManager fileExistsAtPath: tuningsPath] )
{
[fileManager removeItemAtPath: tuningsPath
error: & error ];
if( error )
LOG( @"\n ERROR: %@ \n %@ \n", [error userInfo], [error localizedFailureReason] );
}
assert( [fileManager fileExistsAtPath: origTuningsPath] );
[fileManager copyItemAtPath: origTuningsPath
toPath: tuningsPath
error: & error ];
if( error )
LOG( @"\n ERROR: %@ \n %@ \n", [error userInfo], [error localizedFailureReason] );
LOG( @"done!" );
// load profiles from it
[self loadProfilesFromFile: tuningsPath ];
// auto-sets active preset index to 0 & saves prefs
self.activeThemeIndex = 0;
}
опирается на простую категорию:
#import "NSFileManager+addons.h"
@implementation NSFileManager ( NSFileManager_addons )
+ (NSString *) appSupportDir
{
NSArray* paths = NSSearchPathForDirectoriesInDomains(
NSApplicationSupportDirectory,
NSUserDomainMask,
YES
);
NSString* appSupportDir = [paths objectAtIndex: 0];
return appSupportDir;
}
@end
это строка, вызывающая проблему:
[fileManager copyItemAtPath: origTuningsPath
toPath: tuningsPath
error: & error ];
и это вывод консоли:
[presets init] Presets -> firstбежать!Настройка с предустановками по умолчанию Копирование файла настроек из оригинала ... ОШИБКА: {NSDestinationFilePath = "/ var / mobile / Applications / 38FC3C65-74AF-4892-B48D-A3508A8CF404 / Библиотека / Поддержка приложений / tunings.txt";NSFilePath = "/var/mobile/Applications/38FC3C65-74AF-4892-B48D-A3508A8CF404/Fork.app/tuningsOriginal.txt";NSUserStringVariant = Copy;} Нет такого файла или каталога
Почему вы жалуетесь, что такого файла или каталога нет?Очевидно, что такого файла не должно быть.когда вы копируете файл в новое место, вы не ожидаете, что файл будет там.
, поэтому я предполагаю, что он жалуется на каталог.Но я выловил каталог, используя довольно стандартный метод.что здесь происходит?Это неправильный каталог для использования?Или я что-то не так делаю?