我试图用NSMutable数组更新UITextview文本但是String1没有用String2,String3等更新。我在编码时做错了什么。
Array = [[NSMutableArray alloc]initWithObjects:@"String1",@"String2",@"String3",@"String4", @"String5",..... nil];
[NSTimer scheduledTimerWithTimeInterval:2.0
target:self
selector:@selector(updateText)
userInfo:nil
repeats:YES];
self.textView.text = @"String1";
- (void)updateText {
int index = [Array count];
for(int i = index; i < Array.count; i++){
self.textView.text = [Array objectAtIndex:i];
}}
答案 0 :(得分:1)
您不能将Array
用作变量名称。这是一个保留字。您还要将标准数组初始化为NSMutableArray。如果你想从标准数组中获取可变副本,请执行以下操作:
NSMutableArray *yourMutableArray = standardArray.mutableCopy;
或者只是将其初始化为mutableArray:
NSMutableArray *yourMutableArray = [[NSMutableArray alloc]initWithObjects:@"String1",@"String2",@"String3",@"String4", @"String5",..... nil];
查看上面的updateText函数:你在数组的末尾开始循环,你的循环只到数组的末尾。它甚至不会进入循环。
答案 1 :(得分:1)
以下代码正常工作(用此替换你的updateText并检查)
- (void)updateText {
static int counter=0;
int index = [Array count];
counter=++counter%index;//increase the counter...but make sure that if it gets greater than the number of strings in array....it gets back to 0
self.textView.text = [Array objectAtIndex:counter];
}
您的代码有一些错误:
1)第一行中的点必须离开(我猜你知道..只是说)
2)在updateText中你说(我写的是计算机会看到的......当试图执行你的代码时!)
int index = [Array count];//5 for example
for(int i = 5; i < 5; i++){
self.textView.text = [Array objectAtIndex:i];
}
所以行
self.textView.text = [Array objectAtIndex:i];
永远不会被执行;
3)最后即使你将for循环更改为:
int index = [Array count];//5 for example
for(int i = 0; i < index; i++){
self.textView.text = [Array objectAtIndex:i];
}
会发生什么(例如,我想在Array中有5个字符串):当updateText运行时... for循环立即执行....我变成2..3..4..5非常快,文本从“String1”变为“String2”...“String3”..“String4”......最后“String5”如此之快,以至于您只看到从“String1”变为“String5”
在此之后...每2秒..... updateText再次执行....同样的事情发生了。所以你看到的是.....文本“改变”......从“String5”......到“String5”......所以你什么都没发生!
希望这很清楚。