NSMutable Array不更新UITextView

时间:2013-01-24 22:23:39

标签: iphone ios6 nsmutablearray

我试图用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];
}}

2 个答案:

答案 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”......所以你什么都没发生! 希望这很清楚。