[英]Global variable is not working correctly
在我的視圖控制器的主文件中,我為名為finalStringsArray
的NSArray對象創建了一個屬性:
@property (strong, nonatomic) 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);
} }
];}
上述代碼中最重要的是這句話: _finalStringsArray = [newString3 componentsSeparatedByString:@","];
這將我的最終字符串添加到我的_finalStringsArray
數組對象。 您會注意到我是NSLogging我的數組的count屬性: NSLog(@"Count: %d", _finalStringsArray.count);
當我執行這些NSLog時,它們總是NSLog的正確計數為2。
這是我的問題。 再往下,我有一個方法實現,需要使用_finalStringsArray
的count屬性。 但由於某種原因,它總是NSLogs為“0”,我無法弄清楚為什么。
下面是我的viewDidLoad下面的3個方法實現。 我需要能夠在方法實現中訪問_finalStringsArray
的count屬性-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
:
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
NSLog(@"all good string count3: %d", _finalParseStrings.count);
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1 ;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"all good string count5: %d", [self.finalStringsArray count]);
return [self.finalStringsArray count];
}
findObjectsInBackgroundWithBlock:
是一個異步方法。 可能是numberOfRowsInSection:
在調用完成塊並分配新數組之前調用。
您可能應該在完成塊的末尾調用[self.tableView reloadData]
以使用獲取的數據更新表視圖。
我不知道PFQuery
是否在主線程上調用了完成塊。 如果沒有,則必須將數據源分配和reloadData
調用分派給主隊列。
您應該為您聲明的屬性使用正確的setter和getter。
我敢打賭,如果你改變這一行:
_finalStringsArray = [newString3 componentsSeparatedByString:@","];
對此:
self.finalStringsArray = [newString3 componentsSeparatedByString:@","];
在你的區塊功能中,你可能會有更好的運氣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.