我试图使用户角色页面从登录中获取数据。我创建了自己的委托函数来调用Web服务,但由于-[__ NSArrayM setRoleHistorys:]:无法识别的选择器发送到实例,导致应用程序崩溃。
这是我的代码:.m文件中:

- (void)parserDidStartDocument:(NSXMLParser *)parser
{
  nodeContent = [[NSMutableString alloc]init];
}

- (void)parserDidEndDocument:(NSXMLParser *)parser
{
  arrayitems = [[NSMutableArray alloc] init];
U serRoleDataParser *userroleParser = [[UserRoleDataParser alloc] init];
  // UserRole *currentStudent = (UserRole *) arrayitems;
NSString *Username = username.text;
NSLog(@"the String value%@",Username);
[userroleParser getUserHistoryForIndex:0 LoginId:username.text];
 NSLog(@"the String user value %@",username.text);
userroleParser.delegate = self;

}
- (void) didrecieveData : (NSArray *) userHistories forIndex :(int) index
 {
arrayitems = [[NSMutableArray alloc] init];
UserRole *roles = (UserRole *) arrayitems;
roles.RoleHistorys = userHistories;
datadisplay.text = roles.role;
NSLog(@"the Success data%@", datadisplay.text);

}


在委托文件.h中

 @interface UserRole : NSObject

@property (nonatomic,copy)  NSString *username;
 @property (nonatomic,copy)  NSString *role;
@property (nonatomic,copy)  NSString *empcode;

@property (nonatomic,copy)NSMutableArray * RoleHistorys;
@end


Dataparser.h文件(委托)

#import <Foundation/Foundation.h>
 #import "UserRole.h"

 @protocol UserRoleDataParserDelegate <NSObject>

 - (void) didrecieveData : (NSArray *) userHistories forIndex :(int) index ;

 @end

 @interface UserRoleDataParser : NSObject<NSXMLParserDelegate>
{
 NSMutableData *xmlData;
NSXMLParser *userroleParser;
NSMutableString *capturedString;
BOOL captureCharacters;
NSMutableArray *userHistories;
}

- (void) getUserHistoryForIndex : (int) index LoginId :(NSString*) loginId;

 @property (weak,nonatomic) id <UserRoleDataParserDelegate> delegate;
 @property (nonatomic) int index;

@end


在nslog中获取输出,但应用程序崩溃。

最佳答案

这段代码不正确:

arrayitems = [[NSMutableArray alloc] init];
UserRole *roles = (UserRole *) arrayitems;


您不能只是将数组强制转换为自定义类类型(除非您已将NSMutableArray子类化,并且该实例实际上是子类类型)。您需要先创建的实例或找到所需的正确实例,然后再尝试使用它。

关于ios - ios错误终止-[__ NSArrayM setRoleHistorys:]:,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22609678/

10-09 09:06