我正在尝试使用tableview /数组组合从文档目录中删除文件。
由于某种原因,指向Documents目录路径的NSString
正在转换为NSCFType
(经过一些研究,我理解这种情况正在发生,因为没有发布变量)。因此,应用程序崩溃
NSString *lastPath = [documentsDirectory stringByAppendingPathComponent:temp];
声称NSCFType
无法识别方法stringByAppendingPathComponent
。
如果有人可以帮助我,我将不胜感激(我希望我已经清楚地解释了这一点)。
- (void) tableView: (UITableView *) tableView
commitEditingStyle: (UITableViewCellEditingStyle) editingStyle
forRowAtIndexPath: (NSIndexPath *) indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
NSString *temp = [directoryContent objectAtIndex:indexPath.row];
NSLog(temp);
NSString *lastPath = [documentsDirectory stringByAppendingPathComponent:temp];
[[NSFileManager defaultManager] removeItemAtPath:lastPath error:nil];
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths objectAtIndex:0];
directoryContent = [[[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:nil] retain];
//tableview handling below
}
答案 0 :(得分:2)
似乎documentsDirectory
被设置为自动释放的对象来修复它,
你要么保留它
documentsDirectory = [[paths objectAtIndex:0] retain];
或者你在每次使用它之前初始化它
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
documentsDirectory = [paths objectAtIndex:0];
NSString *lastPath = [documentsDirectory stringByAppendingPathComponent:temp];
[[NSFileManager defaultManager] removeItemAtPath:lastPath error:nil];
我的建议,不要将所有这些变量添加为实例变量,您不需要,更好地在需要时创建它们