Iphone 如何使用stackmob将用户对象添加到事件中

Iphone 如何使用stackmob将用户对象添加到事件中,iphone,ios,core-data,stackmob,Iphone,Ios,Core Data,Stackmob,我使用stackmob作为后端服务。我使用以下代码创建一个新用户: User *newUser = [[User alloc] initIntoManagedObjectContext:self.managedObjectContext]; [newUser setValue:info.username forKey:[newUser primaryKeyField]]; [newUser setValue:info.email forKey:@"email"]; [newUser setPas

我使用stackmob作为后端服务。我使用以下代码创建一个新用户:

User *newUser = [[User alloc] initIntoManagedObjectContext:self.managedObjectContext];
[newUser setValue:info.username forKey:[newUser primaryKeyField]];
[newUser setValue:info.email forKey:@"email"];
[newUser setPassword:info.password];
NSError *error = nil;
if ([self.managedObjectContext save:&error]) {
}
[self.client loginWithUsername:info.username password:info.password onSuccess:^(NSDictionary *result) {
    [userDefaults setBool:YES forKey:@"signedin"];
    NSLog(@"user signed in");
} onFailure:^(NSError *error) {
    NSLog(@"login error");
}];
用户使用以下代码登录:

User *newUser = [[User alloc] initIntoManagedObjectContext:self.managedObjectContext];
[newUser setValue:info.username forKey:[newUser primaryKeyField]];
[newUser setValue:info.email forKey:@"email"];
[newUser setPassword:info.password];
NSError *error = nil;
if ([self.managedObjectContext save:&error]) {
}
[self.client loginWithUsername:info.username password:info.password onSuccess:^(NSDictionary *result) {
    [userDefaults setBool:YES forKey:@"signedin"];
    NSLog(@"user signed in");
} onFailure:^(NSError *error) {
    NSLog(@"login error");
}];
目前,该活动有许多用户


因此,我想
[self.event addUsersObject:(User*)]
。但是如何获取当前登录用户,以便将当前用户添加到此事件中。

在loginWithUsername的onSuccess块中,您需要使用您登录的用户名查询用户实体。像这样的

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"User" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"username=%@", info.username];
[fetchRequest setPredicate:predicate];

[self.managedObjectContext executeFetchRequest:fetchRequest onSuccess:^(NSArray *results){
    ///there should be only 1 result, but the code should really check
    NSLog(@"%@",results[0]);
    User* loggedInUser = results[0];
    [self.event addUserObject:loggedInUser];

} onFailure:^(NSError *error) {
    NSLog(@"Error fetching: %@", error);
}];

我是StackMob的平台传道者

我刚刚创建了一个项目,从中获取了当前登录的用户,并将该对象添加到关系中。您可以自己下载并查看代码


在JustSayinViewController.m文件中查找适当的代码。

所以,我只需要[self.event addUserObject:entity]?addUserObject部分在哪里?您需要在ExecuteFetchRequestOnSuccess处理程序中执行此操作。我更新了答案。很抱歉,我将答案检查标记交给了西德尼·梅斯特。他的代码真的帮了我很多,回答了我的很多问题。但我也很感谢你的帮助。另一个问题:我有两个模型,事件用户。我使用您的解决方案添加UserObject,但情况是[self.event addUsersObject:currentLoggedInUser];它不起作用。它阻塞了用户界面,我不能点击任何东西。在我更改本地关系后,我是否必须在dashboard.stackmob.com上更改或添加关系?我将检查仪表板并确认已为您的架构正确设置了关系。