gpt4 book ai didi

ios - UITableView 加载时 NSMutableArray 数据为零

转载 作者:行者123 更新时间:2023-11-29 02:30:52 24 4
gpt4 key购买 nike

我在将数据从 NSMutableArray 填充到 UITableView 时遇到问题。在 ViewDidLoad 中,我进行了一次网络调用,该调用从 Parse 获取数据并返回一个名为“journalEntries”的 NSMutableArray 然后我将数据复制到此数组到名为“allEntries”的 NSMutableArray 变量。我在这里设置了一个断点并验证了 _allEntries 有 4 个对象(不是 nil)。但是,当涉及到numberOfRowsInSection 方法时,_allEntries.count 返回4 但我在这里设置了一个断点,并且_allEntries 中的所有对象都变成了

- (void)viewDidLoad {
[super viewDidLoad];

_allEntries = [[NSMutableArray alloc] init];

[MMDatabaseHelper getAllJournalEntries:^(NSMutableArray *journalEntries) {

for (MMJournalEntry *entry in journalEntries)
[_allEntries addObject:entry];
// I set a breakpoint here and verified that _allEntries has 4 objects

[self.tableView reloadData];
}];

下面的这个方法返回 4,但是 allEntries 数组中的所有对象都是 nil。它们在 viewDidLoad 中并非为零。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return _allEntries.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];

MMJournalEntry *currentEntry = _allEntries[indexPath.row];

return cell;
}

编辑 1:第一个屏幕截图是网络调用完成时的屏幕截图。第二个是涉及到 numberOfRowsInSection 方法

Pic1

Pic2

编辑 2:这是 getAllJournalEntries 方法

+(void) getAllJournalEntries:(void(^)(NSMutableArray *journalEntries))callback {
PFQuery *query = [PFQuery queryWithClassName:JournalTable];
[query findObjectsInBackgroundWithBlock:^(NSArray *entries, NSError *error) {
if(entries != nil && entries.count > 0) {
NSMutableArray *mainEntries = [[NSMutableArray alloc] init];
for (PFObject *entry in entries) {
//convert to journal entry...
MMJournalEntry *je = [[MMJournalEntry alloc] init];
je.objId = entry.objectId;
je.textContent = entry[@"textContent"];
je.createdByUserId = entry[@"createdByUserId"];
je.cityStateName = entry[@"cityStateName"];
je.lattitude = entry[@"lattitude"];
je.longitude = entry[@"longitude"];
je.lattitude = entry[@"lattitude"];
je.tags = [NSMutableArray arrayWithArray:[entry[@"tags"] componentsSeparatedByString:@","]];
je.numberOfHearts = entry[@"numberOfHearts"];

[mainEntries addObject:je];
}
callback(mainEntries);
}
else
callback(nil);
}];
}

最佳答案

当您从 Parse 收到一个 NSMutableArray 时,为什么不简单地将它复制到一个 NSArray 上?您应该重新声明您的 allEntries 属性,并且您不需要 forin 循环。

_allEntries = journalEntries.copy;

因为 NSArray 是不可变的,所以它永远不会丢失值。

关于ios - UITableView 加载时 NSMutableArray 数据为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26893891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com