![](/img/trans.png)
[英]incompatible pointer types assigning to 'nsmutablearray ' from 'nsarray '
[英]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
返回不可變的NSArray
。 您必須進行mutableCopy
tableData = [[[NSFileManager defaultManager] contentsOfDirectoryAtPath:docPath error:NULL] mutableCopy];
或使用初始化程序
NSArray *fileNames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:docPath error:NULL];
tableData = [NSMutableArray arrayWithArray: fileNames];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.