繁体   English   中英

iPhone:如何制作一个整数数组并将值存储在Obj-C中?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM