1

向 Google 询问“有效的安全范围的书签”,我没有得到好的结果。无论如何,我保存和阅读安全范围的书签没有问题。我有一个XML文件,它保存一个NSMutableArray,其中仅列出了用户选择的导出路径的一个安全范围书签。应用程序使用以下方法读取此书签。

- (void)loadBookmarks {
    if ([self fileExists:[self filePath1]]) { // function
        NSMutableArray *items = [[NSMutableArray alloc] initWithContentsOfFile:[self filePath2]];
        key2a = @"KEY2a";
        for (NSInteger i5 = 0; i5 < items.count; i5++) {
            NSData *k1 = [[items objectAtIndex:i5] objectForKey:@"KEY2a"]; // bookmark

            // Start Security-scoped bookmark //
            NSURL *bookmarkFileURL;
            bookmarkFileURL = [self convertBookmarktoURL:k1]; // function
            [bookmarkFileURL startAccessingSecurityScopedResource]; // <<< no error
            // End Security-scoped bookmark //

            dict2 = [NSDictionary dictionaryWithObjectsAndKeys:k1,key2a,nil];
            [bookmarkArray1 addObject:dict2];
        } // End for
    }
}

如果我尝试手动操作 XML 文件中的数据,调试器不会指示任何类型的错误。有什么方法可以验证这些数据吗?

谢谢您的帮助。

4

1 回答 1

0

看来我需要检查NSURLBookmarkResolutionWithSecurityScope返回的错误。

- (NSURL *)convertBookmarktoURL:(NSData *)bookmarkData {
    NSError *error = nil;
    BOOL bookmarkDataIsStale;
    if (error != NULL) {
        return NULL;
    } else {
        return [NSURL URLByResolvingBookmarkData:bookmarkData options:NSURLBookmarkResolutionWithSecurityScope relativeToURL:nil bookmarkDataIsStale:&bookmarkDataIsStale error:&error];
    }
}


// data is NSData
if ([self convertBookmarktoURL:data] != NULL) {
    // valid
} else {
    // invalid bookmark
}
于 2013-06-24T02:58:35.873 回答