簡體   English   中英

警告:從“ NSArray”分配給“ NSMutableArray *”的指針類型不兼容 <NSString *> * _Nullable&#39;

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM