如何从Parse PFQuery中只检索一列。 " selectKeys"不工作

时间:2015-05-03 21:27:29

标签: ios objective-c uitableview parse-platform pfquery

我在Parse类中有一个名为" Programs"的电视节目列表。每个程序都有以下字段:

-programTitle

-programDescription

-airsOn(这是它播出的网络)

我试图在tableview中显示所有" programTitle" s的列表,以便用户可以选择他们想要查看详细信息的程序。但是,当我运行下面的代码时,只选择" programTitle"专栏,我得到了3列数据。 " programTitle"以及" localId"和" objectId"。

如何从Parse类中仅下载" programTitle"以及在Tableview中显示它们?

我的代码和输出如下。你会看到我有一个名为" programList"在头文件中。我将viewDidLoad的查询结果放入属性" programList"然后使用NSLog打印它。从输出中可以看出,失败了。解析文档让我更加困惑。请帮忙。

Header File:
#import <UIKit/UIKit.h>
#import <Parse/Parse.h>

@interface ProgramsTableViewController : UITableViewController
@property(nonatomic,strong) NSArray *programList;
@property(nonatomic) NSString *selectedProgram;

@end

实现文件中的viewDidLoad:

- (void)viewDidLoad {
    [super viewDidLoad];

    PFQuery *query = [PFQuery queryWithClassName:@"Programs"];
    [query selectKeys:@[@"programTitle"]];
    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        if (!error) {
            self.programList = objects;
            NSLog(@"%@",self.programList);
        } else {
            NSLog(@"Error: %@ %@", error, [error userInfo]);
        }
    }];
}

输出:

2015-05-03 13:59:35.233 Oingo[27838:1802357] (
    "<Programs: 0x7f94a3c608a0, objectId: ukcFRmDsb1, localId: (null)> {\n    programTitle = \"Silicon Valley\";\n}",
    "<Programs: 0x7f94a3c609b0, objectId: JvW9oAYlo8, localId: (null)> {\n    programTitle = \"Broad City\";\n}",
    "<Programs: 0x7f94a3c80920, objectId: n1LJE3YWoP, localId: (null)> {\n    programTitle = \"Mindy Project\";\n}"

tableView不起作用的方法:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    // Return the number of rows in the section.
    return [self.programList count];
}


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

    // Configure the cell...
    cell.textLabel.text = [self.programList objectAtIndex:indexPath.row];
    return cell;
}

1 个答案:

答案 0 :(得分:0)

您可以过滤收到的列表以提取标题:

self.programList = [objects valueForKey:@"programTitle"]

或者您可以保留数组中的对象并取出标题进行显示:

cell.textLabel.text = [[self.programList objectAtIndex:indexPath.row] objectForKey:@"programTitle"];

或者您可以编写云代码函数来获取列表,然后只返回标题列表。