我正在尝试找出解决此警告的方法。我正在用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];