Vì vậy, bạn muốn xóa tất cả *.sqlite
tệp? Không có cách nào để tránh lặp, nhưng bạn có thể giới hạn nó bằng cách sử dụng NSPredicate
để lọc ra các tệp không phải sql đầu tiên và đảm bảo hiệu suất nhanh bằng cách sử dụng liệt kê nhanh. Đây là một phương pháp để làm điều đó:
- (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.");
}
}
Câu trả lời ngắn gọn: Không. Tại sao bạn không muốn lặp lại? Điêu đo rât vui. – trojanfoe
Bạn cần sử dụng NSFileManager để nhận một mảng các kết quả phù hợp. [Mã mẫu tại đây] [1]. [1]: http://stackoverflow.com/a/4764532/1445366 –
Thông số NSFileManager nói gì? –