ios - 从 plist 制作一个可变数组

标签 ios objective-c arrays

我正在尝试从保存数据中的键创建一个 NSArray 并使其可变。这是我到目前为止所拥有的:

NSMutableArray *availableThemes = [[[saveData valueForKey:@"availableThemes"] array] mutableCopy];

如果我是正确的,发送 array 使 availableThemes 返回的这个对象成为一个包含对象内容的数组,然后是 mutableCopy使这个数组成为 NSMutableArray。可悲的是,很明显,我不是。我收到此错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFArray array]: unrecognized selector sent to instance 0x786c7430'

在这里,我认为发送 array 会将此数据转换为 NSArray。相反,它会导致编译器错误。我知道我做了一些愚蠢的错误。问题是,我做了什么?

最佳答案

您正在 NSArray 的实例上调用类方法 array

NSMutableArray *availableThemes = [[[saveData valueForKey:@"availableThemes"] array] mutableCopy];

从您的崩溃日志中可以清楚地看出 availableThemes 键返回一个 NSArray 对象,因此将您的代码更改为:

NSMutableArray *availableThemes = [[saveData valueForKey:@"availableThemes"] mutableCopy];

关于ios - 从 plist 制作一个可变数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30691421/

相关文章:

ios - 处理此类问题的更好方法是什么?

ios - 从 UIDocumentInteractionController 保存到 iCloud Drive 后切换回应用程序会删除导航层次结构

ios - OpenGLES2.0 中的视频作为纹理

objective-c - 有没有可用源代码制作精良的完整 iOS 应用程序示例?

javascript - 如何用字符替换字符串中的所有元音?

javascript - 为什么JS的日期会这样呢?

ios - Master-DetailView 应用程序

ios - 使用大标题时,不会触发 UIScrollView 中的 UIRefreshControl

objective-c - 如果子类引用父类(super class) ivar,则合成不相关的属性会失败

c++ - 使用数组时可能导致此错误的原因是什么?解决方案?