我尝试删除该文件,但是当我使用“indexPath.row”获取文件名时,它总是发送给我...
这是我的代码:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
NSError *error = nil;
NSFileManager *manager = [NSFileManager defaultManager];
NSString *stringToPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/examples/"];
NSString *stringToFile = [NSString stringWithFormat:@"%@/%@.extension", stringToPath, [self.examples objectAtIndex:indexPath.row]];
[manager removeItemAtPath:[NSHomeDirectory() stringByAppendingPathComponent:stringToFile] error:&error];
if(!error){
NSLog(@"no error");
}else{
NSLog(@"%@", error);
}
[self.manageObjectContext deleteObject:[self.examples objectAtIndex:indexPath.row]];
[self.manageObjectContext save:nil];
NSFetchRequest *fetchReq = [NSFetchRequest fetchRequestWithEntityName:@"Examples"];
self.examples = [self.manageObjectContext executeFetchRequest:fetchReq error:&error];
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
使用[self.examples objectAtIndex:indexPath.row]];
Error Domain=NSCocoaErrorDomain Code=4 "The operation couldn’t be completed.
(Cocoa error 4.)" UserInfo=0xb92af90 {NSUnderlyingError=0xb92edb0 "The operation couldn’t be completed.
No such file or directory", NSFilePath=.../Application Support/iPhone Simulator/7.0.3/Applications/8A5B551A-79A1-40E6-B1A4-C948D9F961D0/Documents/example/<Examples: 0xa2b3ef0> (entity:
Examples; id: 0xa2b0310 <x-coredata:/6871E31A-1253-4195-A84D-61C71B002B72/Songs/p21> ;
data: {
name = "Example name to delete";
}).extension, NSUserStringVariant=(
Remove
)}
答案 0 :(得分:1)
对[self.examples objectAtIndex:indexPath.row]
的调用似乎是回馈Songs
对象的实例。您在stringWithFormat:
中使用此功能会导致调用该对象上的description
方法。那当然不是你想要的。
稍微拆分代码:
Songs *songs = [self.examples objectAtIndex:indexPath.row];
NSString *filename = ... // some call on songs to get the filename
只有您知道如何从songs
对象获取文件名。
仅供参考 - 您构建路径的方式完全错误。做一些搜索正确的方法来获取Documents
文件夹的引用。并且不要使用stringWithFormat:
来构建路径。使用stringByAppendingPathComponent:
。
答案 1 :(得分:0)
我得到这样的文件名:
NSArray *fileName = [self.examples valueForKey:@"name"];
NSString *fileName2 = [fileName objectAtIndex:indexPath.row];