Ios 这怎么可能呢?UITableView数据源计数异常行为
我不明白这是怎么可能的,也不明白为什么会这样。谁能给我一个主意吗 我添加了更多的代码来帮助您解决这个问题,但是,我不确定额外的代码会有什么帮助Ios 这怎么可能呢?UITableView数据源计数异常行为,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我不明白这是怎么可能的,也不明白为什么会这样。谁能给我一个主意吗 我添加了更多的代码来帮助您解决这个问题,但是,我不确定额外的代码会有什么帮助 NSMutableArray *messages = [[NSMutableArray alloc] init]; PFUser *currentUser = [PFUser currentUser]; PFQuery *query = [PFQuery queryWithClassName:@"message"]; [query whereKey
NSMutableArray *messages = [[NSMutableArray alloc] init];
PFUser *currentUser = [PFUser currentUser];
PFQuery *query = [PFQuery queryWithClassName:@"message"];
[query whereKey:@"receiver" equalTo:currentUser.objectId];
[query orderByDescending:@"createdAt"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error && objects !=NULL) {
NSMutableArray *listOfLastMsgs = [[NSMutableArray alloc] init];
for (PFObject *object in objects) {
Boolean *tester = false;
for(int i = 0;i<listOfLastMsgs.count;i++){
if([[object objectForKey:@"sender"] isEqualToString:[[listOfLastMsgs objectAtIndex:i] objectForKey:@"sender"]]){
tester = true;
}
}
if(!tester){
[listOfLastMsgs addObject:object];
}
}
for(int i = 0;i<listOfLastMsgs.count;i++){
NSString *s = [[listOfLastMsgs objectAtIndex:i] objectForKey:@"message"];
if(s.length > 80){
s = [s substringToIndex:80];
}
[messages addObject:s];
}
NSLog(@"in did load %lu", (unsigned long)messages.count);
[self.tableView reloadData];
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
NSLog(@"in number of rows %lu", (unsigned long)messages.count);
return messages.count;
}
假设大量代码位于
viewDidLoad
中,问题很简单-您在viewDidLoad
中设置了一个本地messages
变量,并且您的numberOfRowsInSection
引用了一个未初始化的messages
实例变量
假设您确实有一个名为messages
的ivar,在viewDidLoad
中,更改:
NSMutableArray *messages = [[NSMutableArray alloc] init];
致:
什么是
消息
?它是如何声明的?多看一点类会很有用。我们不知道还有什么是处理您的消息数组,这可能会影响这一点。例如,数组在哪里初始化?这是两种方法的实际完整代码吗?在viewDidLoad中。。。这样地。。。。NSMutableArray*消息=[[NSMutableArray alloc]init];我将添加更多的代码。。。
NSMutableArray *messages = [[NSMutableArray alloc] init];
messages = [[NSMutableArray alloc] init];