Лучшим решением будет использование API-интерфейса Firefox (если он существует) для определения идентификаторов профиля. Но я недостаточно хорошо знаю внутренности Firefox, чтобы понять, возможно ли это. Я делаю знаю, что один пользователь может иметь несколько профилей, но это то, что нужно учитывать.
Кроме того, вы (и, честно говоря, другие респонденты) делаете много предположений о структуре каталогов, которые гарантированно не сохраняются. Вы также предполагаете, что все работает правильно, что, конечно, не гарантируется для операций с диском. Учитывая эти соображения, я представлю следующее, в котором достаточно подробно используются абстракции, предоставляемые Фондом. Он также использует более современный 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]);
}