在我的应用中,我设置了NSArray
并将文档目录中包含HTML扩展名的所有对象添加到其中。
然后我使用这个数组来填充UITableView
但是......我经常收到警告
'NSArray'可能无法响应'removeObjectAtIndex:'
如果我将其更改为NSMutableArray
,则该警告会消失,但会在此处显示新警告:
self.files = [[[manager contentsOfDirectoryAtPath:documentsDirectoryPath
error:nil]
pathsMatchingExtensions:[NSArray arrayWithObjects:@"html", nil]] retain];
警告是:
从'NSArray *'
分配给'NSMutableArray *'的指针类型不兼容
该应用程序运行正常,因为编辑表格视图从不会产生任何问题,尽管removeObjectAtIndex:
问题。
答案 0 :(得分:1)
使用mutableCopy
而不是retain
:
self.files = [[[manager contentsOfDirectoryAtPath:documentsDirectoryPath error:nil]
pathsMatchingExtensions:[NSArray arrayWithObjects:@"html", nil]]
mutableCopy];
答案 1 :(得分:1)
pathsMatchingExtensions
返回一个普通的NSArray对象。
当我需要一个可变数组但得到一个不可变数组时,我会经常使用[NSMutableArray arrayWithArray:anArray]
。
在您的情况下,您可以将代码行更改为:
self.files = [NSMutableArray arrayWithArray:[[manager contentsOfDirectoryAtPath:documentsDirectoryPath error:nil]
pathsMatchingExtensions:[NSArray arrayWithObjects:@"html", nil]]];