为什么我必须制作这个数组的可变副本?

ope*_*rog 5 iphone macos cocoa cocoa-touch core-data

Apple提供了这个例子:

NSError *error;
NSMutableArray *mutableFetchResults = [[managedObjectContext executeFetchRequest:request error:&error] mutableCopy];
if (mutableFetchResults == nil) {
    // Handle the error
}
Run Code Online (Sandbox Code Playgroud)

他们为什么在这里调用mutableCopy?是因为他们希望有一个NSMutableArray而不是NSArray,以便稍后编辑/更改它?还是有其他原因吗?

e.J*_*mes 6

答案可以在提供示例的文章中找到:

当表视图控制器加载其视图时,它应该获取Event对象并将它们保存在events数组中,以便以后显示它们.事件数组需要是可变的,因为用户可以添加和删除事件.

示例中的代码块是从持久性存储中获取托管对象的多部分过程的一部分.该过程的下一步将调用setEventsArray:,这需要一个可变数组.