我正在尝试找出解决此警告的方法。我正在用docs目录的内容填充UITableView。代码执行正常,但我需要清除此警告。

@implementation ViewSavedFiles
{
    NSMutableArray *tableData;
}
@synthesize myFileName;

- (void)viewDidLoad {

[super viewDidLoad];

NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
    tableData = [[NSFileManager defaultManager]  contentsOfDirectoryAtPath:docPath error:NULL];

}


向我警告:不兼容的指针类型从'NSArray * _Nullable'分配给'NSMutableArray *'

如果我将NSMutableArray更改为NSArray,则稍后会出现ARC语义问题错误:

[tableData removeObjectAtIndex:indexPath.row];




[tableData insertObject:objectToMove atIndex:toIndexPath.row];


它告诉我:
“ NSArray”没有可见的@interface声明选择器“ removeObjectAtIndex:”

docPath jas是一个字符串,而tableData必须是某种数组,所以我很困惑。
 谢谢!!

最佳答案

contentsOfDirectoryAtPath返回不可变的NSArray。您必须制作一个mutableCopy

tableData = [[[NSFileManager defaultManager]  contentsOfDirectoryAtPath:docPath error:NULL] mutableCopy];


或使用初始化程序

NSArray *fileNames = [[NSFileManager defaultManager]  contentsOfDirectoryAtPath:docPath error:NULL];
tableData = [NSMutableArray arrayWithArray: fileNames];

10-07 14:17