我无法使用我的NSObject类的变量设置数组

时间:2012-12-18 07:32:29

标签: objective-c

我正在试图弄清楚如何使用其他类的变量设置数组。我有NSObject类名为myObject,我在其中声明了变量myInt和int类型的mySecondInt。

然后我导入myObject并尝试设置这样的数组:

MyObject *object = [[MyObject alloc]init];

    object.myInt = 50;
    object.mySecondInt = 15;

    object.array = [[NSArray alloc]initWithObjects:object.mySecondInt,object.myInt, nil];

然后我收到了一个错误:'int''id'的隐式转换不允许使用arc

请帮我解决这个问题,我正在学习Objective-c,我想知道如何管理其他类的变量。

3 个答案:

答案 0 :(得分:2)

对于基元,您需要一个包装类来允许它们存储为对象。

实施例

[[NSArray alloc]initWithObjects:[NSNumber numberWithInt:object.mySecondInt],[NSNumber numberWithInt:object.myInt], nil];

NSArray存储id,它们是通用指针(对象引用)。基元不属于此类,Objective-C不支持自动装箱。

答案 1 :(得分:2)

NSArray只能保存对象(NSObject或其子类的实例),但myInt和mySecondInt是C int值,而不是对象。

你可以这样做:

object.array = [[NSArray alloc]initWithObjects:[NSNumber numberWithInt:object.mySecondInt],[NSNumber numberWithInt:object.myInt], nil];

或者如果您使用新的Xcode,您可以这样编写:

object.array = @[@50,@15];

答案 2 :(得分:0)

NSArray包含对象,myInt和mySecondInt是int值,而不是对象。您可以将其类型转换为NSNumberNSString。如果您将其类型转换为NSString,则在使用时访问其intValue。 另一种方法是在数组和数组中添加整个对象。然后从数组中检索对象&然后访问其实体,这是更好的解决方案,而不是添加单个实体。