最善の解決策は、何らかの Firefox API (存在する場合) を使用してプロファイル ID を判別することです。しかし、これが実現可能かどうかを知るのに十分なほど、Firefox の内部構造をよく知りません。ただし、1 人のユーザーが複数のプロファイルを持つことができることは知っていますが、これは考慮すべき点です。
また、あなた (そして率直に言って、他のレスポンダー) は、ディレクトリ構造について多くの仮定を立てていますが、それらは保持されることが保証されていません。また、すべてが正しく機能することを前提としていますが、これはもちろんディスク操作について保証されていません。これらの考慮事項を念頭に置いて、財団が提供する抽象化をかなり徹底的に使用する以下を提出します。また、必要に応じてより最新の NSURL を使用します。
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *appDirErr;
NSURL *appSupportDir = [fileManager URLForDirectory:NSApplicationSupportDirectory
inDomain:NSUserDomainMask
appropriateForURL:nil
create:NO
error:&appDirErr];
if (appSupportDir) {
NSURL *firefoxDir = [appSupportDir URLByAppendingPathComponent:@"Firefox/Profiles"
isDirectory:YES];
NSError *profileErr;
NSArray *profileURLs = [fileManager contentsOfDirectoryAtURL:firefoxDir
includingPropertiesForKeys:nil
options:0
error:&profileErr];
if (profileURLs) {
for (NSURL *currentProfileURL in profileURLs) {
NSURL *removalURL = [currentProfileURL URLByAppendingPathComponent:@"places.sqlite"
isDirectory:NO];
NSError *removalErr;
if (! [fileManager removeItemAtURL:removalURL error:&removalErr]) {
NSLog(@"Error! %@", [removalErr localizedDescription]);
}
}
}
else {
NSLog(@"Error! %@", [profileErr localizedDescription]);
}
}
else {
NSLog(@"Error! %@", [appDirErr localizedDescription]);
}