【问题标题】:Objective-C can't convert NSNumber to intObjective-C 无法将 NSNumber 转换为 int
【发布时间】:2014-05-14 15:04:39
【问题描述】:

我有一个简单的代码,它将遍历一个整数数组,但是当我尝试使用“for in”循环时,它说我需要一个对象,所以我使用了一个 NSNumber,但为了让我的代码工作,它必须是一个 int,所以在循环之后,我让它将 NSNumber 转换为一个 int。它给了我另一个错误,说我需要声明变量 _strong 才能工作,所以我这样做了,但现在它给了我这些错误:“不兼容的指向整数转换的指针发送 'NSNumber *_strong' 'int' 类型的参数”和“ARC 不允许将 'int' 隐式转换为 'NSNumber *'” 下面是给出错误的代码:

for(__strong NSNumber *i in factors) {

        i = [i intValue];

【问题讨论】:

    标签: objective-c arrays integer int automatic-ref-counting


    【解决方案1】:

    您已经将“i”声明为一个 Objective C 对象(特别是一个 NSNumber 对象)。

    如果要进行转换,请声明一个单独的和不同的变量,例如

    int j;
    

    并将您的整数设置为,例如:

    j = [i intValue];
    

    【讨论】:

    • 换句话说,运行时将 NSNumber 转换为 int 没有问题。这是该 int 的 assignment 回到它所抱怨的 NSNumber 变量。
    • 尝试使用有意义的变量名总是明智的一个原因。
    猜你喜欢
    • 1970-01-01
    • 2011-01-24
    • 2014-05-18
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 2012-05-13
    相关资源
    最近更新 更多