首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在objective c中打印字典

在objective c中打印字典
EN

Stack Overflow用户
提问于 2013-01-04 19:59:59
回答 1查看 5.9K关注 0票数 0

我不能打印我的数组,我不知道我的问题出在哪里

在班级里,我有

代码语言:javascript
复制
@property (nonatomic,strong) NSMutableDictionary *accounts;

和在银行创建账户的VOID函数:

代码语言:javascript
复制
-(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];
}

在班上我有一个帐户

代码语言:javascript
复制
@property int num;
@property int plus;

和方法:

代码语言:javascript
复制
-(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主文件:

代码语言:javascript
复制
Bank *bank=[[Bank alloc]init];
[bank createAccount];

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

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-04 20:05:23

在您尝试使用bank.accounts之前,应该对其进行分配和初始化。

代码语言:javascript
复制
self.accounts = [[NSMutableDictionary alloc] init];

附录:

要影响NSLog为对象打印的内容,可以覆盖description

所以你的Account应该是这样的:

代码语言:javascript
复制
-(NSString*)description{
    return [NSString stringWithFormat:@"Account num=%i plus=%i",self.num,self.plus];
}

NSMutableDictionary已经对该格式进行了很好的描述:

代码语言:javascript
复制
2013-01-04 12:03:11.405 AppName[19683:c07] {
    key1 = value1;
    key2 = value2;
}

因此您可以将循环简化为:NSLog(@"%@", bank.accounts);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14156804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档