我有一个需要从Parse.com读取信息的Xcode应用程序。
从我的viewDidLoad中调用
[self initializeContent];
哪个电话:
- (void) initializeContent
{
[self queryParse: @"MyClassName"];
}
- (void) queryParse:(NSString *) className
{
NSLog(@"Class Name Is: %@", className);
PFQuery *query = [PFQuery queryWithClassName:className];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error)
{
if (!error)
{
myObjectsArray = [[NSArray alloc] initWithArray:objects];
NSLog(@"Objects Array: %@", myObjectsArray);
}
else
{
NSLog(@"Error retrieving objects: %@ %@", error, [error userInfo]);
}
}];
}
这将从Parse返回Object。
但是,以下内容不会从Parse返回任何内容,并且从堆栈跟踪中可以看到该方法被调用两次
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
PFObject *tempObject = [myObjectsArray objectAtIndex:indexPath.row];
NSLog(@"Temp Object: %@", tempObject);
cell.textLabel.text = [tempObject objectForKey:@"MyClassName"];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
return cell;
}
有谁知道为什么该方法返回NULL以及为什么在cellForRowAtIndexPath方法中调用它两次?
答案 0 :(得分:1)
NSLog(@"Temp Object: %@", tempObject);
将在tempObject上调用description
。该方法返回字符串"(null)",但对象本身并不是 - NSArray不能包含nil项。它可能是NSNull值对象,这可能是因为Parse API正在为您的请求返回它。
NSLog(@"Temp Object: %@", tempObject);
内cellForRowAtIndexPath:
被调用两次的可能性不大,但可能会cellForRowAtIndexPath:
被调用两次 - 因为数据源说有两个项目(tableView:numberOfRowsInSection:
正在返回2)。