0

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

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

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

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

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

然后我得到一个错误:弧不允许隐式'int'转换'id'

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

4

3 回答 3

2

对于原语,您需要一个包装类以允许将它们存储为对象。

前任。

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

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

于 2012-12-18T07:36:49.570 回答
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];
于 2012-12-18T07:39:18.363 回答
0

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

于 2012-12-18T07:39:51.663 回答