如何从 Parse PFQuery 中只检索一列。 “选择键”不工作

How to retrieve just one column from Parse PFQuery. " selectKeys" not working

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

-programTitle

-节目描述

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

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

如何仅从 Parse class 下载 "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;
}

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

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

或者你可以保留数组中的objects并取出标题显示:

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

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