Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone:如何制作整数数组并在Obj-C中存储值?_Iphone_Objective C - Fatal编程技术网

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

iPhone:如何制作整数数组并在Obj-C中存储值?,iphone,objective-c,Iphone,Objective C,我想知道一件简单的事情,我无法得到,我想在一个整数数组中动态存储10个值,然后我必须检查存储的值,并与当前值进行比较,在其他条件下是否相同。起初我尝试了与C数组相同的int-temp[10],但似乎无法设置和获取方法,然后我尝试了如下NSNumber 在AppDelagate文件中 NSMutableArray *reqID; @property (nonatomic,readwrite) NSMutableArray * reqID; @synthesize reqID; ...

我想知道一件简单的事情,我无法得到,我想在一个整数数组中动态存储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;
        }
    }

for(int i=0;i首先,您应该这样声明属性:

@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);

正如埃米尔指出的

myDelegate.reqID = [NSMutableArray arrayWithCapacity:10];

它不会给您一个包含10个插槽的数组,而是给您一个空数组,并向运行时提示您最终将在其中放入10个对象。因此,如果在添加10个对象之前从0到9运行E循环,您将得到一个NSRangeException,因为您将从数组末尾运行。

我按照您的建议修改了所有内容ested。但我在读取mutablearray变量时遇到崩溃,如下所示。我在AppDelegate文件DidFinishLaunching中添加了myDelegate.reqID=[NSMutableArray WithCapacity:10];在另一个文件中,我尝试访问它,如下所示:for(int i=0;iSmall correction,在我之前的注释中。我添加了“prevquesid=”[NSMutableArray arrayWithCapacity:10];“在AppDelegate文件DidFinishLaunching中,与我前面的评论不同。崩溃时得到的消息是什么?是否有可能是EXC_BAD_访问错误?[myDelegate.prevquesid objectAtIndex:i]将崩溃,因为数组为空且在i=0时没有任何内容(进入for循环时的i值)您好,我已通过使用NSNumber填充数组值解决了此问题。对于使用0的ex initialize:prevquesid=[[NSMutableArray alloc]initWithCapacity:10];对于(int I=0;I