2014-02-13 59 views
0

我尝试删除该文件,但是当我用“indexPath.row”把它送给我总是0文件名称...从表中删除,并删除文件

这是我的代码:

- (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

我得到的文件名是这样的:

NSArray *fileName = [self.examples valueForKey:@"name"]; 
NSString *fileName2 = [fileName objectAtIndex:indexPath.row]; 
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:

+0

我用这个也但这也不能帮助我,我不能让当前行的名称(这个我删除)... 的NSString * stringPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)objectAtIndex:0] stringByAppendingPathComponent:@“/ examples /”]; 我想删除表中的名字等文件我表中的行是“删除的示例名称”当我滑动我的手指删除行我也想删除文件,但我不能得到名称该行。文件名是行的名称,我无法删除该文件,因为我无法在变量中获取行的名称... –