我试图使用户角色页面从登录中获取数据。我创建了自己的委托函数来调用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/