A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

不知道为什么会出错,希望大家能帮忙说一下问题
  1. #import <Foundation/Foundation.h>
  2. int main(int argc, const char * argv[]) {
  3.     @autoreleasepool {
  4. //1、定义一个字典每个数字(key)对应相应的字符(value)
  5.         NSMutableDictionary *dict=[NSMutableDictionary dictionary];
  6.     dict.dictionary=@{@"0":@"zero",@"1":@"one",@"2":@"two",@"3":@"three",@"4":@"four",@"5":@"five",@"6":@"six",@"7":@"seven",@"8":@"eight",@"9":@"nine"};
  7.         //2、定义一个整型变量用于接收输入的数字
  8.         printf("请输入一个整数\n");
  9.         int a;
  10.         scanf("%d",&a);
  11.         //3、定义一个可变字符串用于接收数字对应的value值,
  12.         NSMutableString *mstr=[NSMutableString string];
  13.         
  14.         //定义一个不可变数组用于存储输入的数字
  15.         
  16.         NSString *str=[NSString stringWithFormat:@"%d",a];
  17.         
  18.         for (int i=0; i<str.length; i++) {
  19.             //取出每一个数字
  20.             unichar ch=[str characterAtIndex:i];
  21.             //printf("%c\n",ch);
  22.             //将ch转换成nsnumber
  23.             NSNumber *num=[NSNumber numberWithUnsignedShort:ch-48];
  24.             NSLog(@"%@",num);
  25.             //存储转换的元素@"zero",@"one",@"two",@"three",@"four",@"five",@"six",@"seven",@"eight",@"nine"
  26.             [mstr appendString:[dict objectForKey:num]];
  27.             //添加空格
  28.             [mstr appendString:@"  "];
  29.             NSLog(@"%@",mstr);
  30.         }
  31.     }
  32.     return 0;
  33. }
复制代码
[mstr appendString:[dict objectForKey:num]];这一句出现报错报错显示的是*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString appendString:]: nil argument',希望大家能帮忙啊。

2 个回复

倒序浏览
//1、定义一个字典每个数字(key)对应相应的字符(value)
        NSMutableDictionary *dict=[NSMutableDictionary dictionary];       dict.dictionary=@{@"0":@"zero",@"1":@"one",@"2":@"two",@"3":@"three",@"4":@"four",@"5":@"five",@"6":@"six",@"7":@"seven",@"8":@"eight",@"9":@"nine"};
        
        //2、定义一个整型变量用于接收输入的数字
        printf("请输入一个整数\n");
        int a;
        scanf("%d",&a);
        //3、定义一个可变字符串用于接收数字对应的value值,
        NSMutableString *mstr=[NSMutableString string];
        
        //定义一个不可变数组用于存储输入的数字
        
        NSString *str=[NSString stringWithFormat:@"%d",a];
        
        for (int i=0; i<str.length; i++) {
            unichar ch=[str characterAtIndex:i];
            //printf("%c\n",ch);
            //将ch转换成nsnumber
            NSNumber *num=[NSNumber numberWithUnsignedShort:ch-48];
            NSLog(@"%@",num);
            NSNumberFormatter * numberFormatter = [[NSNumberFormatter alloc] init];
            NSString *num2 = [numberFormatter stringFromNumber:num];
            //存储转换的元素@"zero",@"one",@"two",@"three",@"four",@"five",@"six",@"seven",@"eight",@"nine"
            [mstr appendString:[dict objectForKey:num2]];
            
            //添加空格
            [mstr appendString:@"  "];
            NSLog(@"%@",mstr);
        }
    }
    return 0;
回复 使用道具 举报
出错原因是num为nil(空)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马