Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 警告:分配给';NSMutableArray*';从';NSArray<;NSString*>;*_可为空';_Ios_Uitableview_Nsarray - Fatal编程技术网

Ios 警告:分配给';NSMutableArray*';从';NSArray<;NSString*>;*_可为空';

Ios 警告:分配给';NSMutableArray*';从';NSArray<;NSString*>;*_可为空';,ios,uitableview,nsarray,Ios,Uitableview,Nsarray,我正在想办法避开这个警告。我正在用docs目录的内容填充UITableView。代码执行良好,但我需要清除此警告 @implementation ViewSavedFiles { NSMutableArray *tableData; } @synthesize myFileName; - (void)viewDidLoad { [super viewDidLoad]; NSString *docPath = [NSSearchPathForDirectoriesInDomains(

我正在想办法避开这个警告。我正在用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];

它告诉我: “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];

不相关,但为什么有
@synthesis
行?这已经很多年不需要了。谢谢!!mutableCopy完美地修复了它。
NSArray *fileNames = [[NSFileManager defaultManager]  contentsOfDirectoryAtPath:docPath error:NULL];
tableData = [NSMutableArray arrayWithArray: fileNames];