【问题标题】:Implicit conversion of 'NSInteger' (aka 'unsigned int') to 'NSNumber *' is disallowed with arcarc 不允许将“NSInteger”(又名“unsigned int”)隐式转换为“NSNumber *”
【发布时间】:2015-12-30 13:43:39
【问题描述】:

我已经写了这段代码:

    for (int i = 1; i < 1000; i++) {
        for (int j = 1; j < 1000; j++) {
            int k = i * j;

            //This is the line were the error messages appears
            NSString *number = [NSString stringWithFormat:@"%d", k];

            NSNumber *length = number.length;
            NSNumber *half = (length / 2);

我想要它做的是获取 int k,将其转换为名为 number 的 NSString,将字符串 number 的长度存储在 NSNumber length 中,以及该值的一半在 NSNumber half.

但是,当尝试将 int k 转换为 NSString number 时,我收到错误消息:

“'NSInteger'(又名'unsigned int')到'NSNumber *'的隐式转换是不允许使用弧”

谁能帮我找出原因?

【问题讨论】:

标签: objective-c


【解决方案1】:

number.length 返回整数而不是 NSNumber

更正为:

NSInteger length = number.length;
NSInteger half = (length / 2);

如果你真的想使用 NSNumber 这样做:(这里我将整数装箱到 NSNumber 对象)

NSNumber *length = @(number.length); //same as [NSNumber numberWithInt:number.length]
NSNumber *half = @(number.length / 2);

【讨论】:

    猜你喜欢
    • 2016-08-11
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    相关资源
    最近更新 更多