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

时间:2013-01-30 11:40:15

标签: 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 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 *)]。但是我如何获得当前的日志记录用户,因此我可以将当​​前用户添加到此事件中。

2 个答案:

答案 0 :(得分:0)

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

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);
}];

答案 1 :(得分:0)

我是StackMob的平台传播者。

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

https://github.com/SidneyAllen/hollagram-ios

在JustSayinViewController.m文件中查找相应的代码。