1

配列を印刷できず、何が問題なのかわかりません

クラス銀行で私が持っている

@property (nonatomic,strong) NSMutableDictionary *accounts;

銀行に口座を作成するための VOID 関数:

-(void)createAccount{
    int x=random()%10;
    NSString *keys=[NSString stringWithFormat:@"%i",x];
    Account *new_account=[[Account alloc]initWithAccountNum:x];
    [self.accounts setObject:new_account forKey:keys];
}

私が持っているクラスのアカウントで

@property int num;
@property int plus;

およびメソッド:

-(id)initWithAccountNum:(int)_num{
    self=[self init];
    if(self!=nil){
        self.num=_num;
        self.plus=0;
    }
    return self;
}

-(NSString*)printer{
    return [NSString stringWithFormat:@"Account num=%i plus=%i",self.num,self.plus];
 }

データを Nslog i メイン ファイルに出力してみます。

Bank *bank=[[Bank alloc]init];
[bank createAccount];

for (Account *acc in bank.accounts) {
    Account *printed_account=[bank.accounts objectForKey:acc];
    NSLog(@"%@",printed_account.printer);

}
4

1 に答える 1

3

bank.accounts使用する前に割り当てて初期化する必要があります。

self.accounts = [[NSMutableDictionary alloc] init];

補遺:

NSLogオーバーライドできるオブジェクトに対してによって出力される内容に影響を与えるにはdescription

したがって、Accountおそらく次のように読む必要があります。

-(NSString*)description{
    return [NSString stringWithFormat:@"Account num=%i plus=%i",self.num,self.plus];
}

NSMutableDictionaryすでにフォーマットのかなり良い説明があります:

2013-01-04 12:03:11.405 AppName[19683:c07] {
    key1 = value1;
    key2 = value2;
}

したがって、ループを次のように単純化できます。NSLog(@"%@", bank.accounts);

于 2013-01-04T12:05:23.150 に答える