iOS:如何从文档目录中删除具有特定扩展名的所有现有文件?

当我更新我的iOS应用程序时,我想删除Documents目录中的任何现有的sqlite数据库。 现在,在应用程序更新上,我将数据库中的数据库复制到文档目录,并通过附加软件包版本进行命名。 所以,在更新上,我也想删除任何可能存在的旧版本。

我只想要能够删除所有的sqlite文件,而不必循环查找以前的版本。 有没有办法通配removeFileAtPath:方法?

那么,你想删除所有*.sqlite文件? 有没有办法避免循环,但你可以限制它通过使用NSPredicate先过滤非SQL文件,并确保快速枚举快速的性能。 这里有一个方法来做到这一点:

 - (void)removeAllSQLiteFiles { NSFileManager *manager = [NSFileManager defaultManager]; // the preferred way to get the apps documents directory NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; // grab all the files in the documents dir NSArray *allFiles = [manager contentsOfDirectoryAtPath:documentsDirectory error:nil]; // filter the array for only sqlite files NSPredicate *fltr = [NSPredicate predicateWithFormat:@"self ENDSWITH '.sqlite'"]; NSArray *sqliteFiles = [allFiles filteredArrayUsingPredicate:fltr]; // use fast enumeration to iterate the array and delete the files for (NSString *sqliteFile in sqliteFiles) { NSError *error = nil; [manager removeItemAtPath:[documentsDirectory stringByAppendingPathComponent:sqliteFile] error:&error]; NSAssert(!error, @"Assertion: SQLite file deletion shall never throw an error."); } }