获取 UIManagedDocument 的 URL

Posted

技术标签:

【中文标题】获取 UIManagedDocument 的 URL【英文标题】:Getting the URL of a UIManagedDocument 【发布时间】:2012-06-15 13:43:55 【问题描述】:

目前,我确定文档目录并检索其中的 URL,保存到数组属性:

// Returns an array of all the Vacations on file.
- (void)findVacationsOnFile

    self.vacationURLs = [[NSArray alloc] init];

    // Identify the documents folder URL.
    NSFileManager *fileManager = [[NSFileManager alloc] init];
    NSError *errorForURLs      = nil;
    NSURL *documentsURL        = [fileManager URLForDirectory:NSDocumentDirectory
                                                     inDomain:NSUserDomainMask
                                            appropriateForURL:nil
                                                       create:NO
                                                        error:&errorForURLs];
    if (documentsURL == nil) 
        NSLog(@"Could not access documents directory\n%@", [errorForURLs localizedDescription]);
     else 

        // Retrieve the vacation stores on file.
        NSArray *keys = [NSArray arrayWithObjects:NSURLLocalizedNameKey, nil];
        self.vacationURLs = [[NSFileManager defaultManager] contentsOfDirectoryAtURL:documentsURL
                                                          includingPropertiesForKeys:keys
                                                                             options:NSDirectoryEnumerationSkipsHiddenFiles
                                                                               error:nil];
    

当我随后想要 UIMangedDocument 的 URL 时,我引用了该数组。但我怀疑 UIManagedDocument 已经知道它的 URL。我发现与此最接近的是persistentStoreName,但这是一种用于设置持久存储名称的方法。任何指导表示赞赏。

【问题讨论】:

【参考方案1】:

是的,UIManagedDocumentUIDocument 的具体子类,必须使用 URL 进行初始化。 URL 存储到属性 fileURL(继承自 UIDocument)中,可以像这样访问:

NSURL* url = myUIManagedDocument.fileURL;

【讨论】:

以上是关于获取 UIManagedDocument 的 URL的主要内容,如果未能解决你的问题,请参考以下文章

无法创建 UIManagedDocument

UIManagedDocument 的迁移问题

UIManagedDocument 和 NSFetchedResultsController

从 UIManagedDocument 到普通堆栈的核心数据迁移

UIManagedDocument 不保存到磁盘

保存 UIManagedDocument 时应用程序崩溃