向谷歌询问“有效的安全范围书签”,我没有得到好结果。无论如何,我在保存和阅读安全范围的书签方面没有遇到任何问题。我有一个 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文件中的数据,则调试器不会指示任何类型的错误。有没有办法验证这些数据?
感谢您的帮助。
答案 0 :(得分: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
}