2013-01-24 83 views
1

我试图用NSMutable数组更新UITextview文本,但String1没有用String2,String3等更新。我在编码方面做错了什么?NSMutable阵列没有更新UITextView

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]; 
}} 
+3

变量名应该为小写.. – Rob

+1

什么是循环和遍地设置标签的意义呢?到不同的值? – Rob

+0

你的代码对我没有任何意义。循环中的代码根本不会执行。 –

回答

1

您不能使用Array作为变量名称。这是一个保留字。你也正在将一个标准数组初始化为一个N​​SMutableArray。如果你想从一个标准的数组一个可变副本只是做:

NSMutableArray *yourMutableArray = standardArray.mutableCopy; 

或只是intialize它作为一个mutableArray:

NSMutableArray *yourMutableArray = [[NSMutableArray alloc]initWithObjects:@"String1",@"String2",@"String3",@"String4", @"String5",..... nil]; 

看看上面您UPDATETEXT功能:你在开始你的循环你的数组的末尾,你的循环只能到数组的末尾。它甚至不会进入循环。

+0

当我试图更新randamly然后它与下面的代码工作,但更新序列明智比随机与上述代码不起作用。 int index = arc4random()%[myArray count]; myTextView.text = [myArray objectAtIndex:index]; – user1452248

+0

你为什么要这么做?你正在选择一个随机数,而mod最有可能不会返回一个有效的索引。我刚刚编辑了我的答案,以包含上面的代码的更多问题 –

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]; 
} 

会发生什么(我假设有5个字符串数组为例):当UPDATETEXT运行....的对循环得到立即执行....我变成2..3..4..5非常快,文本从“String1”更改为“String2”...“String3”..“String4”......最后“String5”如此之快以至于你只看到从“String1”到“String5”
之后......每隔2秒..... updateText再次被执行....并且发生同样的事情。所以你看到的是......文本“改变”......从“String5”...到“String5”......所以你什么都看不到!
希望清楚。