当用户单击下一个按钮时,它会生成随机数,我想将该数字存储到数组中。我的数组只存储最后一个数字。我应该在'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 ];
}
答案 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--;
}
}
使用此选项可让您在每次单击按钮时向后移动数组。再说一次,如果这不是你想要的,请告诉我,我们将深究它