Xcode无法检索对象

时间:2014-07-07 22:27:38

标签: xcode methods

我有一个需要从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方法中调用它两次?

enter image description here

1 个答案:

答案 0 :(得分:1)

NSLog(@"Temp Object: %@", tempObject);将在tempObject上调用description。该方法返回字符串"(null)",但对象本身并不是 - NSArray不能包含nil项。它可能是NSNull值对象,这可能是因为Parse API正在为您的请求返回它。

NSLog(@"Temp Object: %@", tempObject);cellForRowAtIndexPath:被调用两次的可能性不大,但可能会cellForRowAtIndexPath:被调用两次 - 因为数据源说有两个项目(tableView:numberOfRowsInSection:正在返回2)。