1

我正在使用 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 *)]。但是我如何获得当前的日志用户,所以我可以将当​​前用户添加到这个事件中。

4

2 回答 2

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);
}];
于 2013-01-31T04:35:54.380 回答
0

我是 StackMob 的平台布道者。

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

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

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

于 2013-01-31T17:13:27.477 回答