Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.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
Ios 自定义对象初始化不使用addObject存储NSMutableArray对象:_Ios_Objective C_Nsmutablearray_Init - Fatal编程技术网

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!就这样。完美的