我正在试图弄清楚如何使用其他类的变量设置数组。我有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,我想知道如何管理其他类的变量。
答案 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值,而不是对象。您可以将其类型转换为NSNumber
或NSString
。如果您将其类型转换为NSString
,则在使用时访问其intValue
。
另一种方法是在数组和数组中添加整个对象。然后从数组中检索对象&然后访问其实体,这是更好的解决方案,而不是添加单个实体。