はい、
そのため、更新する必要があるCydiaアプリがあります。 CydiaアプリにはDocumentsフォルダーがないことを知っているので、作成する必要があります。そして、これがiOS 4(iOS 5では動作しません)で以前に作成した方法です:
mkdir("/var/mobile/Library/APPNAME", 0755);
mkdir("/var/mobile/Library/APPNAME/Documents", 0755);
NSString *foofile = @"/var/mobile/Library/APPNAME/Documents/database.db";
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:foofile];
if (fileExists == TRUE) {
NSLog(@"already exists");
} else {
NSLog(@"doesn't exists");
NSFileManager *fileManager = [[NSFileManager defaultManager]autorelease];
NSError *error;
NSString *documentDBFolderPath = @"/var/mobile/Library/APPNAME/Documents/database.db";
NSString *resourceDBFolderPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"database.db"];
[fileManager copyItemAtPath:resourceDBFolderPath toPath:documentDBFolderPath error:&error];
}
データベースファイルをそのフォルダーにコピーするコードも含めました。それは動作しません(SSH経由で手動でフォルダを作成した場合でも)。
助けてください!ありがとう。
これがディレクトリを作成するために作成したメソッドです
-(void)createDirectory:(NSString *)directoryName atFilePath:(NSString *)filePath
{
NSString *filePathAndDirectory = [filePath stringByAppendingPathComponent:directoryName];
NSError *error;
if (![[NSFileManager defaultManager] createDirectoryAtPath:filePathAndDirectory
withIntermediateDirectories:NO
attributes:nil
error:&error])
{
NSLog(@"Create directory error: %@", error);
}
}
createDirectoryAtURL:withIntermediateDirectories:attributes:error:
を使用してみてください。
createDirectoryAtURL:withIntermediateDirectories:attributes:error:
指定されたパスに指定された属性を持つディレクトリを作成します。
パラメータ
url
-作成するディレクトリを指定するファイルURL。相対パスを指定する場合は、対応するNSURLオブジェクトを作成する前に、現在の作業ディレクトリを設定する必要があります。このパラメーターはnilであってはなりません。
createIntermediates
-YES
の場合、このメソッドは、urlにディレクトリを作成する一環として、存在しない親ディレクトリを作成します。NO
の場合、中間の親ディレクトリが存在しないと、このメソッドは失敗します。このメソッドは、中間パス要素のいずれかがディレクトリではなくファイルに対応している場合も失敗します。
attributes
-新しいディレクトリおよび新しく作成された中間ディレクトリのファイル属性。所有者とグループの番号、ファイルの許可、および変更日を設定できます。このパラメーターにnilを指定するか、特定の値を省略すると、説明で説明されているように1つ以上のデフォルト値が使用されます。このディクショナリに含めることができるキーのリストについては、「定数」(54ページ)セクションで、属性ディクショナリでキーとして使用されるグローバル定数をリストしています。 NSFileHFSCreatorCodeやNSFileHFSTypeCodeなどの一部のキーは、ディレクトリには適用されません。
error
-入力時、エラーオブジェクトへのポインター。エラーが発生した場合、このポインターは、エラー情報を含む実際のエラーオブジェクトに設定されます。エラー情報が必要ない場合は、このパラメーターにnilを指定できます。戻り値
YES
ディレクトリが作成されたか、すでに存在する場合、またはエラーが発生した場合はNO。
NSFileManagerのクラス参照 を確認してください。必要なフォルダーを作成するには、createDirectoryAtPath:withIntermediateDirectories:attributes:error:
Swiftでは、存在または作成された場合にtrueを返します。
func ensureDirectoryExists(path:String) -> Bool {
if !NSFileManager.defaultManager().fileExistsAtPath(path) {
do {
try NSFileManager.defaultManager().createDirectoryAtPath(path, withIntermediateDirectories: true, attributes: nil)
} catch {
print(error)
return false
}
}
return true
}