如何从 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 仅获取标题列表。
我在名为 "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 仅获取标题列表。