iphone – int []的NSArray

iphone – int []的NSArray,第1张

概述我需要为我的关卡存储一堆int []. 我决定将int []存储在NSMutableArray中并从数组中获取一个随机数将是一个很好的方法. 事实是,int []不是一个对象,你不能将它添加到一个obj-c数组中. 有没有人有关于如何获得随机整数数组的建议? 我的数组看起来像这样: int lvl1[] { 4,80,49,6,40,77,21,20,91,5,100,91,...... }; 我需要为我的关卡存储一堆int [].

我决定将int []存储在NSMutableArray中并从数组中获取一个随机数将是一个很好的方法.

事实是,int []不是一个对象,你不能将它添加到一个obj-c数组中.

有没有人有关于如何获得随机整数数组的建议?

我的数组看起来像这样:

int lvl1[] { 4,80,49,6,40,77,21,20,91,5,100,...... }; int lvl2[] { 20,260,385,290,448,210,329,...... }; int lvl3[] { 441,90,364,70,170,434,...... }; ...int lvl50[] { 441,...... };

然后我需要随机获取其中一个.

解决方法 编辑:改为使用一种不那么邪恶的方法,由汤米的评论提供.

您可以将静态数组视为指针并将它们存储在NSValue对象中:

[mutableArray addobject:[NSValue valueWithPointer:lvl1]];...int* level = [(NSValue*)[mutableArray objectAtIndex:whatever] pointerValue];int someContainedInt = level[index];

或者,您可以将每个单独的数组包装在自己的NSData对象中,并将它们存储在可变数组中:

[mutableArray addobject:[NSData dataWithBytes:lvl1 length:sizeof(int) * lengthOfArray]];...const int* level = (const int*) [(NSData*) [mutableArray objectAtIndex:whatever] bytes];

我不得不同意Frank C,为什么你需要使用Cocoa数组来存储这些数组呢?难道你不能把整批作为2D C阵列来对待吗?如果它是静态数据,那么NSMutableArray的动态方面看起来几乎是多余的.

编辑2:使用C数组

如果您的关卡数组长度相同 – 称之为LEVEL_SIZE – 您可以构建一个直的2D数组,如下所示:

static int levels[][LEVEL_SIZE] = {    {1,2,3,4,...},{15,17,19,{8,7,...}};

否则,您需要单独构建每个数组,然后将它们组合在一起:

static int level1[] = {1,...};static int level2[] = {15,...};static int level3[] = {8,...};...static int* levels[] = {lvl1,lvl2,lvl3,...};

无论哪种方式,您都可以将一个级别作为指针:

int* level = levels[0];printf("%d\n",level[1]); // should print 2

首先,你将拥有NUM_LEVELS级别 – 在你的情况下为50 – 所以将许多索引0..49粘贴到你的可变数组中,作为NSNumber对象:

NSMutableArray* levelindices = [NSMutableArray arrayWithCapacity:NUM_LEVELS];for ( int i = 0; i < NUM_LEVELS; ++i )    [levelindices addobject:[NSNumber numberWithInt:i]];

使用此数组可以计算,获取和删除需求.当您拉出NSNumber对象时,使用它来索引到levels数组以获取级别:

int* level = levels[[someNSNumber intValue]];

瞧瞧.

总结

以上是内存溢出为你收集整理的iphone – int []的NSArray全部内容,希望文章能够帮你解决iphone – int []的NSArray所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1066921.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存