Objective c 如何制作iOS目录?

Objective c 如何制作iOS目录?,objective-c,cydia,Objective C,Cydia,好, 所以我有一个Cydia应用程序需要更新。我知道Cydia应用程序没有文档文件夹,所以你必须制作一个。以下是我以前在iOS 4中的制作过程(iOS 5上不起作用): 我还包括将数据库文件复制到该文件夹的代码。这不起作用(即使我通过SSH手动创建文件夹) 请帮忙!谢谢。请检查。要创建文件夹,您需要createDirectoryAtPath:withIntermediateDirectories:attributes:error:尝试使用createDirectoryAtURL:withInte

好,

所以我有一个Cydia应用程序需要更新。我知道Cydia应用程序没有文档文件夹,所以你必须制作一个。以下是我以前在iOS 4中的制作过程(iOS 5上不起作用):

我还包括将数据库文件复制到该文件夹的代码。这不起作用(即使我通过SSH手动创建文件夹)


请帮忙!谢谢。

请检查。要创建文件夹,您需要
createDirectoryAtPath:withIntermediateDirectories:attributes:error:

尝试使用
createDirectoryAtURL:withIntermediateDirectories:attributes:error:

:

createDirectoryAtURL:withintermediatedirectory:attributes:error:

在指定路径上创建具有给定属性的目录

参数

url
-指定要创建的目录的文件url。 如果要指定相对路径,必须设置 当前工作目录,然后再创建相应的 NSURL对象。此参数不能为nil

createIntermediates
-如果
YES
,此方法将创建任何不存在的 父目录作为在url中创建目录的一部分。如果
, 如果中间父目录中的任何一个发生错误,此方法将失败 不存在。如果任何中间路径 元素对应于文件而不是目录

属性
-新目录和任何新创建目录的文件属性 中间目录。您可以设置所有者和组编号, 文件权限和修改日期。如果为此指定nil 参数或忽略特定值时,将显示一个或多个默认值 如讨论中所述使用。有关密钥列表,您可以 包括在本词典中,请参见“常量”(第54页)章节列表 在属性字典中用作键的全局常量。一些 其中的键,如NSFileHFSCreatorCode和NSFileHFSTypeCode 不适用于目录

error
-输入时,指向错误对象的指针。如果发生错误, 此指针设置为包含错误的实际错误对象 信息。如果不指定,则可以为此参数指定nil 需要错误信息

返回值
如果 目录已创建或已存在,如果发生错误,则不存在


下面是我创建目录的方法

-(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);
    }
}

在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
}

出了什么问题,或者我可以使用哪段代码来创建目录?对,出了什么问题?你还没告诉我们。没有错误消息,也没有对故障的描述。@Daniel R Hicks:什么都没有发生。。从下面的代码粘贴后,我确实得到一个错误<代码>创建目录错误:错误域=NSCOCAERRORDOMAIN代码=513“操作无法完成。(可可错误513。)”用户信息=0x1c2650{NSFilePath=/var/mobile/Library/APPNAME,NSUnderlyingError=0x1c3520“操作无法完成。不允许的操作”}我尝试过,没有创建文件夹。。。我认为这只适用于OSx,而不是iOS?您是否使用
YES
作为
与中间目录的参数:
NSFileManager*NSFm=[NSFileManager defaultManager];[NSFm createDirectoryAtPath:@/var/mobile/Library/APPNAME”,带中间目录:是属性:无错误:无];[NSFm createDirectoryAtPath:@/var/mobile/Library/APPNAME/Documents”,带中间目录:是属性:无错误:无]
就是我使用的代码……假设
/var/mobile/Library/
存在,你不需要第一次调用,只需要第二次调用。您确定您具有正确的写入权限吗?它会返回什么错误?从我的iPad上回答时,我似乎有点慢…,另一个答案似乎与此基本相同。这是我得到的错误<代码>无法完成该操作。不允许操作这可能是您需要的
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
}