Ios 全局变量工作不正常

Ios 全局变量工作不正常,ios,objective-c,uitableview,variables,global-variables,Ios,Objective C,Uitableview,Variables,Global Variables,在视图控制器的主文件中,我为名为finalStringsArray的NSArray对象创建了一个属性: @property(强,非原子)NSArray*finalStringsArray 然后在viewDidLoad中,我确保初始化对象: self.finalStringsArray = [[NSArray alloc]init]; 在viewDidLoad方法实现的下一步,我向服务器查询数据,清除服务器发送给我的一些额外垃圾(如空白),然后将我的完美字符串放入我的finalStringsAr

在视图控制器的主文件中,我为名为
finalStringsArray
的NSArray对象创建了一个属性:

@property(强,非原子)NSArray*finalStringsArray

然后在viewDidLoad中,我确保初始化对象:

self.finalStringsArray = [[NSArray alloc]init];
在viewDidLoad方法实现的下一步,我向服务器查询数据,清除服务器发送给我的一些额外垃圾(如空白),然后将我的完美字符串放入我的
finalStringsArray
数组中:

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (!error) {

     NSString *parseString = [[NSString alloc]initWithFormat:@"%@", objects];


     NSString *cURL=[self stringBetweenString:@"=" andString:@")" withstring:parseString];


     NSString *newString = [cURL stringByReplacingOccurrencesOfString:@" " withString:@""];

     NSString *newString2 = [newString stringByReplacingOccurrencesOfString:@"(" withString:@""];

     NSString *newString3 = [newString2 stringByReplacingOccurrencesOfString:@"\\n" withString:@""];


        _finalStringsArray = [newString3 componentsSeparatedByString:@","];


        int index;

        for(index = 0; index < _finalStringsArray.count; index++) {

            NSString *string = [[NSString alloc]init];


            string = _finalStringsArray[index];


            NSLog(@"Count: %d", _finalStringsArray.count);

        }

        NSLog(@"Count: %d", _finalStringsArray.count);


    } }


 ];}

您应该为声明的属性使用适当的setter&getter

我打赌如果你改变这一行:

    _finalStringsArray = [newString3 componentsSeparatedByString:@","];
为此:

    self.finalStringsArray = [newString3 componentsSeparatedByString:@","];

在block函数中,您可能会有更好的运气。

findObjectsInBackgroundWithBlock:
是一种异步方法。可能
numberOfRowsInSection:
在调用完成块之前被调用 并分配了一个新数组

您可能应该在完成后调用
[self.tableView reloadData]
块使用获取的数据更新表视图

我不知道
PFQuery
是否调用主线程上的完成块。
如果没有,则必须将数据源分配和
重新加载数据
调用分派到主队列。

我希望您的解决方案能起作用,但事实并非如此。它仍在进行NSLogging,计数为0。作为self.finalStringsArray和_finalStringsArray。我尝试了count方法和count属性。还有其他想法吗?简单地不使用globals(特别是当你刚开始使用globals时)有很多话要说。简单地说,学会使用单例。毕竟,该应用程序是一个单例程序,它是保存一两个“全球需要的”概念的好地方。您所要做的就是向AppDelegate.h添加一个属性,然后在任何需要的地方使用它。再简单不过了。您可以在前缀文件中包含一个方便的宏:#定义执行此操作的应用程序((AppDelegate*)[[UIApplication sharedApplication]delegate])!非常感谢您抽出时间来帮忙。
    self.finalStringsArray = [newString3 componentsSeparatedByString:@","];