警告:从 'NSArray<NSString *> * _Nullable' 分配给 'NSMutableArray *' 的不兼容指针类型
Warning: Incompatible pointer types assigning to 'NSMutableArray *' from 'NSArray<NSString *> * _Nullable'
我正在想办法解决这个警告。我正在使用 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
returns 不可变 NSArray
。你必须做一个mutableCopy
tableData = [[[NSFileManager defaultManager] contentsOfDirectoryAtPath:docPath error:NULL] mutableCopy];
或使用初始化程序
NSArray *fileNames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:docPath error:NULL];
tableData = [NSMutableArray arrayWithArray: fileNames];
我正在想办法解决这个警告。我正在使用 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
returns 不可变 NSArray
。你必须做一个mutableCopy
tableData = [[[NSFileManager defaultManager] contentsOfDirectoryAtPath:docPath error:NULL] mutableCopy];
或使用初始化程序
NSArray *fileNames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:docPath error:NULL];
tableData = [NSMutableArray arrayWithArray: fileNames];