[英]iPhone:How to make an integer array and store values in Obj-C?
我想知道一件简单的事情,我无法理解的是我想动态地将10个值存储在整数数组中,然后我必须检查存储的值并与当前值进行比较,以了解是否相同。其他一些情况。 最初,我尝试过类似C数组的方法,即int temp [10],但似乎无法设置和获取方法,然后我尝试了如下所示的NSNumber,
在AppDelagate文件中,
NSMutableArray *reqID;
@property (nonatomic,readwrite)
NSMutableArray * reqID;
@synthesize reqID;
........................
........................
........................
在其他文件中
int rd = (1+arc4random() % [arr count]);
[myDelegate.reqID addObject:[NSNumber numberWithUnsignedInteger:rd]];
那我需要检查一下
for (int i=0; i<10; i++)
{
NSUInteger anInt = [[myDelegate.reqID objectAtIndex:i] unsignedIntegerValue];
if ( anInt==rd )
{
rd = (1+arc4random() % [arr count]);
break;
}
}
但是它不能按预期工作,即数组值未提供适当的值。 我不知道如何在Obj-C中使用整数数组并处理它以便以后访问等。
有人可以让我满意吗?
首先,您应该这样声明属性:
@property (nonatomic,retain) NSMutableArray * reqID;
其次,您将需要在某处实际创建NSMutableArray。 例如:
myDelegate.reqID = [NSMutableArray arrayWithCapacity:10];
请注意,必须使用myDelegate.reqID
而不是reqID
才能保留对象。
(我个人将在这里使用普通的C数组...)
编辑:完成操作后,记得要进行[reqID release]
。
编辑2:这是使用C数组的方法:
在您的类中,添加一个实例变量int *reqID
。 然后声明一个属性:
@property (nonatomic, assign) int *reqID;
然后为数组分配空间,请执行以下操作:
myDelegate.reqID = malloc(10 * sizeof(int));
然后,可以使用[]语法访问数组:
int a = myDelegate.reqID[i];
然后,完成后,请执行以下操作:
free(myDelegate.reqID);
就像埃米尔(Emil)指出的那样,
myDelegate.reqID = [NSMutableArray arrayWithCapacity:10];
不会为您提供一个包含10个插槽的数组,而是为您提供一个空数组,并向运行时提示您最终将在其中放置10个东西。 因此,如果在添加10个对象之前从0到9运行循环,则会得到NSRangeException,因为您将从数组末尾运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.