如何在数组超时用户中添加值点击xcode中的下一个按钮?

时间:2011-05-10 22:41:13

标签: iphone xcode nsmutablearray nsarray

当用户单击下一个按钮时,它会生成随机数,我想将该数字存储到数组中。我的数组只存储最后一个数字。我应该在'next'函数之外初始化数组吗?此外,我希望'后退按钮'从最后一个数字读取数组。请指教。

- (IBAction)Next:(id)sender {

    // Do any additional setup after loading the view from its nib.

    //generate random number - result is a range of 0-10   
    int randomnumber = (arc4random() % 10);

   // Add the random number into array
   [myArray addObject:[NSNumber numberWithInt:randomnumber]];

    // easy way to look what is now in the array
        NSLog([myArray description]);

     NSString *fileName = [NSString stringWithFormat:@"File_no_%d", randomnumber +1];

    //render a complete file-path out of our filename, the main-bundle and the file-  extension

    NSString *filePath=[[NSBundle mainBundle] pathForResource:fileName ofType:@"txt"];

    //fetch the text content from that file

    NSString *myText= [NSString stringWithContentsOfFile:filePath
                                                encoding:NSUTF8StringEncoding
                                                   error:nil];

    //hand that text over to our textview

    TextView.text=myText;
}

- (IBAction)Back:(id)sender {

    NSNumber *last_array_num = [myArray objectAtIndex:myArray.count - 1];

   // read the file name based on the last number in array

    NSString *fileName = [NSString stringWithFormat:@"File_no_%d", last_array_num ];
}

1 个答案:

答案 0 :(得分:0)

你说你正在Next方法中初始化数组并添加它吗?如果是这样,则需要在该方法之外初始化数组,并且只需一次。这样可以保持数据的完整性,否则在下次初始化时会被覆盖。

您正在添加到数组中,因此根本不需要更改。至于在Back方法中读取数字,您只需要使用以下代码行:

编辑:这是您用来从阵列中获得所需结果的代码。此外,正式方法不是从代码中的大写字母开始,除非它定义了一个类(如NSString)。对于像这样的方法,您应该使用类似- (IBAction)backButton:(id)sender的方法。这根本不是什么大问题,你的代码也可以正常工作,但这只是礼仪,从长远来看,你的代码不会让人感到困惑。我觉得有人可能会在以后说些什么,所以我只是提前通知你。无论如何,这是你想要的代码

第二次编辑:就像你在想的那样,你应该创建一个可以从代码中读取的变量。在头文件中,添加此

int arrayCount;

在您的代码中,创建myArray后,设置arrayCount

arrayCount = [myArray count];

如果在数组中添加或删除任何对象,也应该这样做。

然后在您的操作方法中,您可以调用文件

- (IBAction)Back:(id)sender {
    NSString *filePath = [NSString stringWithFormat:@"File_no_%d", [[myArray objectAtIndex:arrayCount - 1] intValue]];

    // make sure you aren't going beyond the bounds of the array;
    if (arrayCount > 1) {
        // decrease the count of the arrayCount;
        arrayCount--;
    }
}

使用此选项可让您在每次单击按钮时向后移动数组。再说一次,如果这不是你想要的,请告诉我,我们将深究它