Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使我的应用程序[NSMutableArray1 removeAllObjects]iphone sdk崩溃_Iphone_Nsmutablearray - Fatal编程技术网

使我的应用程序[NSMutableArray1 removeAllObjects]iphone sdk崩溃

使我的应用程序[NSMutableArray1 removeAllObjects]iphone sdk崩溃,iphone,nsmutablearray,Iphone,Nsmutablearray,我使用此代码检查NSMutableArray中是否存在任何对象 如果是,我将它们全部删除,但它会崩溃,尽管有对象为什么 if([NSMutableArray1 count]==1) { [poemoptionslist removeAllObjects]; } if ([NSMutableArray1 count]==0) { [poemoptionslist addObject: final1]; } 控制

我使用此代码检查NSMutableArray中是否存在任何对象 如果是,我将它们全部删除,但它会崩溃,尽管有对象为什么

    if([NSMutableArray1 count]==1)
    {
        [poemoptionslist removeAllObjects];
    }



    if ([NSMutableArray1 count]==0)
    {
        [poemoptionslist addObject: final1];
    }
控制台输出

2010-10-18 03:42:13.166 app1[33398:207]*终止应用程序 由于未捕获的异常 “NSInternalInconsistencyException”, 原因:'-[\uu\nsfarray removeObjectAtIndex::变异方法 发送到不可变对象的 *第一次抛出时调用堆栈:(0 CoreFoundation
0x02e55b99异常预处理+185 1 libobjc.A.dylib
0x02fa540e objc_异常_抛出+47 2核心基金会
0x02e0e238+[N异常 raise:格式:arguments:+136 3
CoreFoundation
0x02e0e1aa+[N异常 加薪:格式::+58 4
CoreFoundation
0x02e4d3c1-[\uu\NSCFArray removeObjectAtIndex:+1935
CoreFoundation
0x02dfe973-[NSMUTABLEARRY 移除所有对象]+83 6
爱情诗
0x0004dc8d-[提交OEM提交OEM:]+ 18560 7 UIKit
0x003b77f8-[ui]应用程序 发送操作:发送到:从:forEvent:+119 8 UIKit
0x00442de0-[UIControl 发送操作:发送到:forEvent:+679
UIKit
0x00445262-[UIControl(内部) _SendActionsForvents:withEvent:+527 10 UIKit
0x00443e0f-[UIControl touchesEnded:withEvent:+458 11 UIKit
0x003db3d0-[UIWindow _sendTouchesForEvent:+567 12 UIKit
0x003bccb4-[UIApplication sendEvent:] +447 13 UIKit 0x003c19bf _UIApplicationHandleEvent+ 7672 14图形服务
0x033e6822紫风回拨+1550 15核心基金会
0x02e36ff4 __CFRUNLOOP\u正在调用\u OUT\u以执行\u SOURCE1\u函数
+52 16 CoreFoundation 0x02d97807__CFRunLoopDoSource1+215 17核心基金会
0x02d94a93 uu CFRunLoopRun+979 18 CoreFoundation
0x02d94350 CFRunLoopRunSpecific+208 19核心基金会
0x02d94271 CFRUNLOOPSRUNINMODE+97 20 图形服务
0x033e500c GSEventRunModal+217 21 图形服务
0x033e50d1 GSEventRun+115 22 UIKit 0x003c5af2 UIApplicationMain+1160 23首爱情诗
0x00002728 main+102 24 poemsoflove 0x000026b9启动+53 25???
0x00000001 0x0+1)终止调用 在抛出一个 “NSException”程序接收信号: “西格伯特”

伙计们,这里没什么不安全的

我保存到NSUSerdefaults,如下所示:

mutable1 = [[NSMutableArray alloc] init];
[mutable1 addObjectsFromArray:[prefs1 objectForKey:@"favorites"]];
如果([mutable1计数]==0) { [mutable1 addObject:final1]; }

    NSUserDefaults *list =[NSUserDefaults standardUserDefaults];
    [list setObject:mutable1 forKey:@"favorites"];
    [list synchronize];
我像这样加载数据

NSUserDefaults *prefs1 =[NSUserDefaults standardUserDefaults];

if ( [prefs1 objectForKey:@"favorites"] != nil)
{
    mutable1 = [[NSMutableArray alloc] init];
    mutable1 = [prefs1 objectForKey:@"favorites"];

我得到了这些东西!然后,当它运行removeallobjects时,它会崩溃

您将NSMutableArray1设置为NSArray的实例,而不是NSMutableArray,或者您将NSMutableArray1声明为NSArray vs.NSMutableArray类型的属性


此外,您还应该遵循Cocoa/Objective-C命名约定。即,类名以大写字母开头;变量的形式为myArray1(或更具描述性的形式,最好)。

您将NSMutableArray1设置为NSArray的实例,而不是NSMutableArray,或者将NSMutableArray1声明为NSArray vs.NSMutableArray类型的属性


此外,您还应该遵循Cocoa/Objective-C命名约定。即,类名以大写字母开头;变量的形式为myArray1(最好是更具描述性的形式)。

错误消息表示您正在将消息发送到不可变数组,这会引发异常。未捕获的异常会导致程序终止

如何创建阵列?导致这种情况的最常见错误是:

[mutableArray copy]

即使您正在复制的东西是可变的,该副本也将是不可变的。在随机选择的示例中,使用mutableCopy insted。

错误消息表示您正在将消息发送到不可变数组,这会引发异常。未捕获的异常会导致程序终止

mutable1 = [[NSMutableArray alloc] init];
mutable1 = [prefs1 objectForKey:@"favorites"];
如何创建阵列?导致这种情况的最常见错误是:

[mutableArray copy]
即使您正在复制的东西是可变的,该副本也将是不可变的。在随机选择的示例中,使用mutableCopy insted

mutable1 = [[NSMutableArray alloc] init];
mutable1 = [prefs1 objectForKey:@"favorites"];
即使您已将mutable1声明为NSMutableArray,也将其重新分配给NSUserDefaults对象返回的对象。此对象显然是NSArray而不是NSMutableArray,因此发生了崩溃

通过执行以下操作,可以使用preferences数组加载NSMutableArray:

mutable1 = [[NSMutableArray alloc] init];
[mutable1 addObjectsFromArray:[prefs1 objectForKey:@"favorites"]];
即使您已将mutable1声明为NSMutableArray,也将其重新分配给NSUserDefaults对象返回的对象。此对象显然是NSArray而不是NSMutableArray,因此发生了崩溃

通过执行以下操作,可以使用preferences数组加载NSMutableArray:

mutable1 = [[NSMutableArray alloc] init];
[mutable1 addObjectsFromArray:[prefs1 objectForKey:@"favorites"]];

你能发布更多关于坠机的信息吗?消息、堆栈跟踪等?您可能希望
[NSMutableArray1 count]>=1
,因为==1只是检查是否有1且只有1。您能否显示如何声明“poemoptionslist”?您能否发布有关崩溃的更多信息?消息、堆栈跟踪等?您可能希望
[NSMutableArray1 count]>=1
,因为==1只是检查是否有1且只有1。您能展示一下您是如何声明“poemoptionslist”的吗?非常感谢,我花了数小时研究这个问题!除了分配一个全新的“可变1”,还有其他方法吗。类似于
mutable1=[prefs1 objectForKey:@“收藏夹”]我们这里不需要alloc。。我尝试了
mutable1=(NSMutableArray*)[prefs1 objectForKey:@“favorites”]但失败:(当然,如果首选项@“favorites”实际上是一个数组,您不需要修改它,请使用
NSArray*faves=[prefs1 ArrayWorkey:@“favorites”];
。非常感谢您,我花了几个小时研究这个问题!有什么问题吗