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:@","];