- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
发生情况的解释:用户在另一个 View 中添加了他们最喜欢的工作。现在,用户位于“收藏夹”选项卡中,并决定不再希望该职位成为他们的收藏夹之一,因此他们滑动以删除该职位。他们点击删除按钮,下面的错误发生了……代码按原样工作,但它也会删除用户保存为收藏夹的每一个作业,而不是只删除一个作业。
我的代码还提醒我:
警告:正在主线程上执行长时间运行的操作。 中断 warnBlockingOperationOnMainThread() 以进行调试。
#import "JobDetailViewController.h"
#import "MyFavoritesTableViewController.h"
#import "Parse/Parse.h"
#import "Job.h"
#import "JobListViewController.h"
@interface MyFavoritesTableViewController ()
@property (nonatomic, strong) NSString *mainTitle;
@property (nonatomic, strong) NSString *subTitle;
@end
@interface MyFavoritesTableViewController ()
@end
@implementation MyFavoritesTableViewController
{}
@synthesize mainTitle;
@synthesize subTitle;
- (id)initWithCoder:(NSCoder *)aCoder
{
self = [super initWithCoder:aCoder];
if ([PFUser currentUser]) {
// Custom the table
// The className to query on
self.parseClassName = @"Jobs";
// The key of the PFObject to display in the label of the default cell style
self.textKey = @"Position";
// Whether the built-in pull-to-refresh is enabled
self.pullToRefreshEnabled = YES;
// Whether the built-in pagination is enabled
self.paginationEnabled = YES;
// The number of objects to show per page
self.objectsPerPage = 30;
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
}
- (void)objectsWillLoad {
[super objectsWillLoad];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.tableView reloadData];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath object: (PFObject *)object
{
static NSString *myJobsTableIdentifier = @"myFavsCell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:myJobsTableIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:myJobsTableIdentifier];
}
// Configure the cell
PFFile *thumbnail = [object objectForKey:@"imageFile"];
PFImageView *thumbnailImageView = (PFImageView*)[cell viewWithTag:100];
thumbnailImageView.image = [UIImage imageNamed:@"AppIcon.png"];
thumbnailImageView.file = thumbnail;
[thumbnailImageView loadInBackground];
UILabel *positionLabel = (UILabel*) [cell viewWithTag:101];
positionLabel.text = [object objectForKey:@"Position"];
UILabel *rotationLabel = (UILabel*) [cell viewWithTag:102];
rotationLabel.text = [object objectForKey:@"Rotation"];
UILabel *locationLabel = (UILabel*) [cell viewWithTag:103];
locationLabel.text = [object objectForKey:@"Location"];
UILabel *typeLabel = (UILabel*) [cell viewWithTag:104];
typeLabel.text = [object objectForKey:@"Type"];
return cell;
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"showDetailedView"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
Job *job = [[Job alloc] init];
JobDetailViewController *destViewController = segue.destinationViewController;
PFObject *object = [self.objects objectAtIndex:indexPath.row];
job.position = [object objectForKey:@"Position"];
job.poc = [object objectForKey:@"POC"];
job.email = [object objectForKey:@"Email"];
job.phone = [object objectForKey:@"Phone"];
job.apply = [object objectForKey:@"Apply"];
job.imageFile = [object objectForKey:@"imageFile"];
job.rotation = [object objectForKey:@"Rotation"];
job.location = [object objectForKey:@"Location"];
job.type = [object objectForKey:@"Type"];
job.clearance = [object objectForKey:@"Clearance"];
job.job_description = [object objectForKey:@"Job_Description"];
job.qualifications = [object objectForKey:@"Qualifications"];
job.originalJob = object;
destViewController.job = job;
}
}
#pragma mark - UITableViewDelegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
if ([self.objects count] == indexPath.row) {
[self loadNextPage];
} else {
PFObject *photo = [self.objects objectAtIndex:indexPath.row];
NSLog(@"%@", photo);
// Do something you want after selected the cell
}
}
- (PFQuery *)queryForTable
{
PFUser *user = [PFUser currentUser];
PFRelation *relation = [user relationForKey:@"Favorites"];
PFQuery *myquery = [relation query];
if (self.pullToRefreshEnabled) {
myquery.cachePolicy = kPFCachePolicyNetworkOnly;
}
return myquery;
}
#pragma mark - DeleteJobViewDelegate
- (void)tableView:(UITableView *)tableView
commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath {
PFUser *user = [PFUser currentUser];
PFRelation *relation = [user relationForKey:@"Favorites"];
PFQuery *myquery = [relation query];
NSArray *array = [myquery findObjects];
for (PFObject *object in array)
{
[relation removeObject:object];
}
[user saveInBackground];
[self.tableView reloadData];
[self loadObjects];
}
@end
最佳答案
问题是您要从关系中删除所有对象:
NSArray *array = [myquery findObjects];
for (PFObject *object in array)
{
[relation removeObject:object];
}
您的代码所做的是遍历您的数组并从关系中删除每个对象。
您要做的是仅删除该单元格的作业。您可以使用 indexPath
获取它:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
PFUser *user = [PFUser currentUser];
PFRelation *relation = [user relationForKey:@"Favorites"];
[relation removeObject:[self.objects objectAtIndex:indexPath.row]];
[user saveInBackground];
[self.tableView reloadData];
[self loadObjects];
}
你的第二个问题:
警告:正在主线程上执行长时间运行的操作。中断 warnBlockingOperationOnMainThread() 以进行调试。
该警告是因为 findObjects
是一个同步调用。您应该改用 findObjectsInBackground
。但是,如果您进行我上面给出的更改,则不需要它。
关于ios - PFRelation 从 PFRelation 中删除一个对象,而不是全部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31152324/
发生情况的解释:用户在另一个 View 中添加了他们最喜欢的工作。现在,用户位于“收藏夹”选项卡中,并决定不再希望该职位成为他们的收藏夹之一,因此他们滑动以删除该职位。他们点击删除按钮,下面的错误发生
我正在构建一个简单的应用程序,该应用程序允许用户登录并在表格 View 中显示好友列表。 我最初想我会在 PFUser 类中包含一个 friends 数组,其中包含用户的好友 ID。因此,当应用程序加
我正在创建一个应用程序,用户可以在其中创建一个组,然后在该组中添加一些信息。为此,需要在解析数据库中创建一个 PFRObject,并为该对象创建一个包含所有组信息的 PFRelation。我无法将关系
我正在尝试获取拥有玻璃柜的客户的姓名。 这是我的代码。 为了保存数据,我这样做: self.vitrine["username"] = PFUser.currentUser()?.username
我有一个带有搜索栏的 Collection View ,可以在数据库中搜索搜索到的用户。我目前可以获得搜索到的用户。该单元格有一个关注按钮,当单击该按钮时,将创建 PFRelation,并且关注按钮将
我正在尝试将一个对象添加到 Parse 中的一个关系,尽管代码执行时没有任何错误,但该关系没有出现在后端,因此该对象没有被保存。 PFObject *newContact = [PFObject ob
我有一个表示事件的自定义 Parse 类。该事件有 3 个 PFRelation 列,分别代表已被邀请参加该事件的用户、已接受该事件的用户和已拒绝该事件的用户。 有没有什么办法可以在不再次查询类的情况
目前,我可以在当前用户和 mainUser(要关注的用户)之间创建一个 PFRelation。 PFUser.currentUser().relationForKey("following").add
我正在尝试向 PFRelation 添加一个对象。我想我已经检查了最常见的问题,我尝试添加的对象已经在解析时保存了。此外,关系在解析中指向与我要添加的对象类型相同的类。 代码 func tapToJo
我在使用 Relation 更新现有的 Parse 对象时遇到问题,我想用新的对象列表替换现有的关系。不幸的是,PFRelation 中没有 removeAllObjects。 PFRelat
我正在尝试查询应用程序当前用户的 PFRelation 以加载显示所有用户 friend 的表格 View 。每个用户在第一次使用该应用程序时都保存在一个名为“User”的类下,一旦他们添加了一个 f
我在类别和项目之间有一个 PRelation 我希望制作一个 PFQueryTableViewController 用于将项目添加到类别。 PFQueryTableViewController 列出所
所以我无法理解 PFRelation 如何保存,我有这段代码: PFUser *user = [PFUser currentUser]; PFRelation *relation = [user re
我想将一个PFObject 添加到一个PFUser 的PFRelation 中,但不幸的是它无法工作。我收到此错误: [Error]: wrong type of relation. Expecti
大家好,我想向那些可以将其提供给我的人寻求帮助......在您开始使用特定的 Parse.com 作为我的应用程序中的数据管理器之前在我的 FILE.h 中,我创建了一个名为 PostDetails
请帮帮我。我正在使用社交网络应用程序。我想创建 PFObject“组”。用户可以关注它。但只有其他参与者可以将其他用户添加为成员。 据我了解,我可以使用 PFRelation 类开发以下功能。但是请告
我试图在我的应用程序中找到 friend 之间的所有对话,我的 friend 存储在 PFRelation 中。 我正在寻找类似于的东西 PFObject#whereKey(key: String,
我正试图在解析中了解 PFRelation。我有一个名为“girlBio”的类,用于存储有关女孩的信息和一个名为“stuff”的类,用于存储有关项目的信息。代码如下: PFObject *item =
我正在尝试查询我的应用程序中用户尚未添加为“ friend ”的所有现有用户。我收到错误 Cannot do a comparison query for type: PFRelation 这是我当前
我正在用 Parse 构建一个聊天应用程序。我有一个“对话”类和一个“消息”类。一个对话可以有许多消息(一对多)关系。 此外,我使用本地数据存储来缓存对象(对话和带有 PFRelation 的消息)。
我是一名优秀的程序员,十分优秀!