1

「有効なセキュリティ スコープのブックマーク」について Google に問い合わせても、良い結果が得られません。とにかく、セキュリティ スコープのブックマークの保存と読み取りに問題はありません。ユーザーが選択したエクスポート パスのセキュリティ スコープのブックマークを 1 つだけリストするNSMutableArrayを保存するXMLファイルがあります。アプリケーションは、次のメソッドでこのブックマークを読み取ります。

- (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 に答える