Rav*_*ran 16 iphone objective-c nsmutablearray removeall ios
在我的iphone项目(启用ARC)中,我有一个nsmuatble数组,其中包含大约5个托管对象(从核心数据中检索),在某些情况下,我需要从中删除所有对象nsmutablearray
我使用了以下方法来删除对象,但在崩溃日志的两种情况下它都崩溃了 -[__NSArrayI removeObject:]: unrecognized selector sent to instance 0xa391640
if (surveys && [surveys count]>0)
{
[surveys removeAllObjects];
surveys = [[NSMutableArray alloc]init];
}
Run Code Online (Sandbox Code Playgroud)
我也试过
if (surveys && [surveys count]>0)
{
for(Survey *obj_Survey in surveys)
{
[surveys removeObject:obj_Survey];
}
surveys = [[NSMutableArray alloc]init];
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我如何清空该阵列,任何建议都会被提前感谢
dev*_*luv 19
答案很简单.
对于第一种情况.
检查已初始化数组的部分,如果已为NSMutableArray对象分配了NSArray,请检查代码中的某处.
对于第二种情况.
通过它枚举时,无法从阵列中删除对象.这将导致崩溃说array has mutated while enumerating
这个:
[__NSArrayI removeObject:] : unrecognized selector sent to instance 0xa391640
Run Code Online (Sandbox Code Playgroud)
表示您的数组"调查"是NSArray(不可变).你确定你已经正确地初始化了吗?如果你通过这样的作业来做
NSMutableArray* surveys = [someManagedObjectContext executeFetchRequest:request]
Run Code Online (Sandbox Code Playgroud)
数组"survey"将是NSArray类型,因为Core Data获取请求返回NSArrays.
错误消息说明了一切,
[__NSArrayI removeObject:]: unrecognized selector
Run Code Online (Sandbox Code Playgroud)
__NSArrayI是不可变数组(NSArray)的代码字,这意味着您的调查对象不是NSMutablArray,而是NSArray.
您无法添加或删除对象NSArray.
检查你的代码.您已分配NSArray到调查或已将其重新初始化为 NSArray.
| 归档时间: |
|
| 查看次数: |
10326 次 |
| 最近记录: |