Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.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/5/objective-c/26.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
-[\uu NSArrayI objectforkeydsubscript:]:发送到xcode6 objective-c ios中实例的无法识别的选择器_Ios_Objective C_Iphone_Xcode_Viewcontroller - Fatal编程技术网

-[\uu NSArrayI objectforkeydsubscript:]:发送到xcode6 objective-c ios中实例的无法识别的选择器

-[\uu NSArrayI objectforkeydsubscript:]:发送到xcode6 objective-c ios中实例的无法识别的选择器,ios,objective-c,iphone,xcode,viewcontroller,Ios,Objective C,Iphone,Xcode,Viewcontroller,我正在努力学习objective-c,遇到了一些我无法解决的问题。 我相信这是一个基本的问题,但我是新来的,在中间迷失了。 我有: ModelViewController.h ModelViewController.m 附表h 附表m 在ModelViewController.h中 #import <UIKit/UIKit.h> @interface FetchScheduleVC : UIViewController @property (copy, nonatom

我正在努力学习objective-c,遇到了一些我无法解决的问题。 我相信这是一个基本的问题,但我是新来的,在中间迷失了。

我有:

  • ModelViewController.h
  • ModelViewController.m
  • 附表h
  • 附表m
在ModelViewController.h中

#import <UIKit/UIKit.h>

@interface FetchScheduleVC : UIViewController 
    @property (copy, nonatomic) NSMutableArray *myMutableArray;
@end
我稍微简化了代码,但基本流程是一样的。 当我运行此命令并单击按钮调用-(iAction)saveBtn:(UIButton*)sender时,我得到:

-[__NSArrayI objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fcb61d2fd10
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI objectForKeyedSubscript:]: unrecognized selector sent to instance 0x7fcb61d2fd10'

通过这里的方法发送NSArray时有什么错误吗?

正如您声明的myMutableArray和copy semantic一样-

@property (copy, nonatomic) NSMutableArray *myMutableArray;
这将向数组发送一条复制消息,从而生成一个不可变的副本

因此,要在
NSMutableArray
上使用上述语义,需要将“setter”方法重写为-

- (void)setArray:(NSArray *)newArray 
{
    if ( array != newArray ) 
{ 
        [array release];
        array = [newArray mutableCopy];
    }
}

上面的setter方法只是将newArray的可变副本的引用分配给数组,这有助于改变对象,从而避免错误。

正如您已将myMutableArray的复制语义声明为-

@property (copy, nonatomic) NSMutableArray *myMutableArray;
这将向数组发送一条复制消息,从而生成一个不可变的副本

因此,要在
NSMutableArray
上使用上述语义,需要将“setter”方法重写为-

- (void)setArray:(NSArray *)newArray 
{
    if ( array != newArray ) 
{ 
        [array release];
        array = [newArray mutableCopy];
    }
}

上面的setter方法只是将newArray的可变副本的引用分配给数组,这有助于您改变对象,从而避免错误。

我只能告诉您代码中发生了什么,而不是发生在哪里,因为您没有发布有问题的代码

objectforkeydsubscript
方法用于
NSDictionary
订阅,例如:

NSDictionary *dict = @{ @"key" : @"value" };
NSString *value = dict[@"key"];    // HERE
看起来你在做这样的事情:

for(int i=0; i < 3; i++){
    [_myMutableArray addObjects: [NSNumber numberWithInt: i]
}
NSNumber *num = _myMutableArray[@"3"];    // !!!!
for(int i=0;i<3;i++){
[\u myMutableArray addObjects:[NSNumber numberWithInt:i]
}
NSNumber*num=_myMutableArray[@“3”];/!!!!

还有一件事我可以告诉你,这与未初始化的数组无关,因为Objective-C简单地忽略了对
nil
对象的取消引用尝试,而这个异常已经超出了这个范围。

我只能告诉你代码中发生了什么,而不是发生在哪里,因为你没有发布有问题的代码

objectforkeydsubscript
方法用于
NSDictionary
订阅,例如:

NSDictionary *dict = @{ @"key" : @"value" };
NSString *value = dict[@"key"];    // HERE
看起来你在做这样的事情:

for(int i=0; i < 3; i++){
    [_myMutableArray addObjects: [NSNumber numberWithInt: i]
}
NSNumber *num = _myMutableArray[@"3"];    // !!!!
for(int i=0;i<3;i++){
[\u myMutableArray addObjects:[NSNumber numberWithInt:i]
}
NSNumber*num=_myMutableArray[@“3”];/!!!!

还有一件事我可以告诉你,这与未初始化的数组无关,因为Objective-C简单地忽略了对
nil
对象的解引用尝试,而这个异常已经超出了这个范围。

在上面的代码中,我忘了包括

_myMutableArray = [[NSMutableArray alloc] init];
虽然我在我的实际代码中有这个

这个问题非常愚蠢。很抱歉这个误导性的问题。希望你忽略这个问题,因为它是由于这样一个粗心的错误

在我的实际代码中,我有重复的变量名,如下所示:

for(int i=0; i < 3; i++){
    [_myMutableArray addObjects: [NSNumber numberWithInt: i]
}
NSNumber *num = _myMutableArray[@"3"];    // !!!!
在附表h中

#import <Foundation/Foundation.h>

@interface Schedule : NSObject
@property (strong, nonatomic) NSMutableArray *classArray;
-(void) createClassFromArray: (NSArray *) selectedArr;
@end
#import <Foundation/Foundation.h>

@interface Schedule : NSObject
@property (strong, nonatomic) NSMutableArray *selectedArr;
-(void) createClassFromArray: (NSArray *) selectedArr;
@end
#导入
@接口计划:NSObject
@属性(强,非原子)NSMutableArray*selectedArr;
-(void)createClassFromArray:(NSArray*)选择DARR;
@结束

…非常…粗心的错误。

在上面的代码中,我忘了包括

_myMutableArray = [[NSMutableArray alloc] init];
虽然我在我的实际代码中有这个

这个问题非常愚蠢。很抱歉这个误导性的问题。希望你忽略这个问题,因为它是由于这样一个粗心的错误

在我的实际代码中,我有重复的变量名,如下所示:

for(int i=0; i < 3; i++){
    [_myMutableArray addObjects: [NSNumber numberWithInt: i]
}
NSNumber *num = _myMutableArray[@"3"];    // !!!!
在附表h中

#import <Foundation/Foundation.h>

@interface Schedule : NSObject
@property (strong, nonatomic) NSMutableArray *classArray;
-(void) createClassFromArray: (NSArray *) selectedArr;
@end
#import <Foundation/Foundation.h>

@interface Schedule : NSObject
@property (strong, nonatomic) NSMutableArray *selectedArr;
-(void) createClassFromArray: (NSArray *) selectedArr;
@end
#导入
@接口计划:NSObject
@属性(强,非原子)NSMutableArray*selectedArr;
-(void)createClassFromArray:(NSArray*)选择DARR;
@结束

…非常..粗心的错误。

你在哪里初始化_myMutableArray?_myMutableArray不是一个可变数组。因此你得到了这个崩溃。-1你接受了一个与你的问题无关的答案。这个问题是误导性的,对其他人没有帮助。你在哪里初始化_myMutableArray?_myMutableArray不是一个可变数组。因此你是获取此崩溃。-1您接受的答案与您的问题无关。此问题具有误导性,对其他人没有帮助。@Joon.P这不是异常的原因。@Joon.P这不是异常的原因。