警告:不兼容的指针类型从'NSArray <nsstring * =“”> * _Nullable分配给'NSMutableArray *'

时间:2018-07-08 14:31:23

标签: ios uitableview nsarray

我正在尝试找出解决此警告的方法。我正在用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必须是某种数组,所以我很困惑。  谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

或使用初始化程序

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