Ios 自定义对象初始化不使用addObject存储NSMutableArray对象:
在创建带有静态登录的登录屏幕时,我试图将它们私下存储在下面的类实现中。当按钮创建Ios 自定义对象初始化不使用addObject存储NSMutableArray对象:,ios,objective-c,nsmutablearray,init,Ios,Objective C,Nsmutablearray,Init,在创建带有静态登录的登录屏幕时,我试图将它们私下存储在下面的类实现中。当按钮创建IONServer对象时,我使用函数-(void)login:(NSString*)username password:(NSString*)pw初始化它,并将两个UITextField.text字符串传递给它 如果您注意到在init中,我正在使用NSLog测试东西,但是在每个断点处,似乎storedLoginsNSMutable数组是nil IONServer.m #import "IONServer.h" #im
IONServer
对象时,我使用函数-(void)login:(NSString*)username password:(NSString*)pw
初始化它,并将两个UITextField.text
字符串传递给它
如果您注意到在init中,我正在使用NSLog测试东西,但是在每个断点处,似乎storedLogins
NSMutable数组是nil
IONServer.m
#import "IONServer.h"
#import "IONLoginResult.h"
@interface IONServer ()
@property (nonatomic) NSMutableArray *storedLogins;
@end
@implementation IONServer
-(void)createStoredLogins
{
NSArray *firstUser = @[@"user1",@"pass1"];
NSArray *secondUser = @[@"user2",@"pass2"];
[self.storedLogins addObject:firstUser];
[self.storedLogins addObject:secondUser];
}
-(instancetype)init {
self = [super init];
if (self) {
[self createStoredLogins];
NSLog(@"Stored logins: %@", _storedLogins);
NSLog(@"Stored user: %@", _storedLogins[0][0]);
}
return self;
}
-(void)login:(NSString *)username password:(NSString *)pw
{
NSArray *logins = [[NSArray alloc]initWithArray:_storedLogins];
for (int i = 0; i < [logins count]; i++) {
if (username == logins[i][0] && pw == logins[i][1]) {
IONLoginResult *result = [[IONLoginResult alloc] initWithResult:YES errorMessage:@"Success!"];
self.result = result;
break;
} else {
IONLoginResult *result = [[IONLoginResult alloc] initWithResult:NO errorMessage:@"Error!"];
self.result = result;
}
}
}
-(void)logout
{
}
@end
#导入“IONServer.h”
#导入“IONLoginResult.h”
@接口服务器()
@属性(非原子)NSMutableArray*存储日志;
@结束
@实现服务器
-(无效)createStoredLogins
{
NSArray*firstUser=@[@“user1”,@“pass1”];
NSArray*secondUser=@[@“user2”,@“pass2”];
[self.storedLogins addObject:firstUser];
[self.storedLogins addObject:secondUser];
}
-(instancetype)初始化{
self=[super init];
如果(自我){
[self-createStoredLogins];
NSLog(@“存储登录:%@”,存储登录);
NSLog(@“存储用户:%@,_-storedLogins[0][0]);
}
回归自我;
}
-(无效)登录:(NSString*)用户名密码:(NSString*)密码
{
NSArray*登录名=[[NSArray alloc]initWithArray:_storedLogins];
对于(int i=0;i<[logins count];i++){
如果(用户名==登录[i][0]&&pw==登录[i][1]){
IONLoginResult*结果=[[IONLoginResult alloc]initWithResult:是错误消息:@“成功!”];
self.result=结果;
打破
}否则{
IONLoginResult*结果=[[IONLoginResult alloc]initWithResult:无错误消息:@“错误!”];
self.result=结果;
}
}
}
-(作废)注销
{
}
@结束
您需要初始化阵列:
-(instancetype)init {
self = [super init];
if (self) {
_storedLogins = [[NSMutableArray alloc] init];
[self createStoredLogins];
NSLog(@"Stored logins: %@", _storedLogins);
NSLog(@"Stored user: %@", _storedLogins[0][0]);
}
return self;
}
是的,它是nil,因为您没有为该变量赋值任何其他内容;它以nil开头,就像所有objective-C变量一样。doh!就这样。完美的