首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时使用NSApplicationSupportDirectory和NSDocumentDirectory

同时使用NSApplicationSupportDirectory和NSDocumentDirectory
EN

Stack Overflow用户
提问于 2013-08-05 13:31:42
回答 1查看 785关注 0票数 0

这是交易..。我正在创建一个应用程序(来自我的另一个应用程序),但我正在改变,从只使用NSDocumentDirectory,这显然允许用户查看所有的用户文件,只看到一些文件.即用户创建PDF。我让它起作用了。但是,iTunes中的文件共享/文档窗口中没有显示任何内容。

首先是在持久性模型中调用NSApplicationSupportDirectory的方法.

代码语言:javascript
复制
+(NSString *)getDocumentpath
{
    //NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
    return [paths objectAtIndex:0];
}

+(NSString *) documentsDirectoryPath
{
    //NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    return documentsDirectory;
}

+(void) copyResourceFileToDocumentsDirectory: (NSString *) fileName
{
    //NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *writablePath = [documentsDirectory stringByAppendingPathComponent:fileName];

    NSFileManager * fileManager = [NSFileManager defaultManager];
    BOOL succeeded = [fileManager fileExistsAtPath:writablePath];
    NSError *error;

    //If file is not in the documents directory then only write
    if (!succeeded)
    {
        NSString *newPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:fileName];
        succeeded = [fileManager copyItemAtPath:newPath toPath:writablePath error:&error];

        if (succeeded == FALSE) {
            NSLog(@"%@ : copy failed", fileName);
        } else {
            NSLog(@"%@ : copy success", fileName);
        }
    } else {
            NSLog(@"%@ : already exists", fileName);
    }
}

这是将PDF保存到NSDocumentDirectory中的方法,它与其他应用程序没有更改.

代码语言:javascript
复制
- (NSString*)saveJournalToPDF:(UIView*)journal andName:(NSString*)name
{
    NSString* fileName = [NSString stringWithFormat:@"%@.pdf",name];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:fileName];

    ... // the rest of the data strings for creating the PDF

}

我的问题是:如何在不公开其他数据文件的情况下,只让PDF对用户可见?现在,它似乎要么全部,要么一无所有!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-22 09:35:55

我忽略了一个小细节..。将应用程序设置为实际共享文件!该应用程序的info.plist没有将“应用程序支持iTunes文件共享”设置为“是”。(UIFileSharingEnabled)。这么简单的解决办法!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18059446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档