gpt4 book ai didi

ios - 返回对象不为空但为空

转载 作者:行者123 更新时间:2023-11-29 03:02:27 25 4
gpt4 key购买 nike

我无法解决使用以下方法遇到的一个小问题:

+ (User *) createUserForLoginWithFacebookToken: (NSString *) facebookToken andExpirationToken: (NSDate *) expirationToken{
//Init current user before having collected data from API after authentication

NSManagedObjectContext *managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
managedObjectContext.parentContext = [RKManagedObjectStore defaultStore].mainQueueManagedObjectContext;
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"User" inManagedObjectContext:managedObjectContext.parentContext];
User * result = [[User alloc] initWithEntity:entityDescription insertIntoManagedObjectContext:managedObjectContext];
result.email=@"defaultValue@test.com";
result.gender=[NSNumber numberWithInt:-1];
if (facebookToken != nil && expirationToken != nil && ![facebookToken isEqualToString:@""] && [expirationToken compare:[NSDate date]]==NSOrderedDescending) {
result.facebookToken=facebookToken;
result.facebookExpiration=expirationToken;
}

return result;
}

在返回之前,会创建结果变量并设置一些属性。但是当我用这个方法获取这个返回的对象时:

currentUser=[User createUserForLoginWithFacebookToken:facebookToken andExpirationToken:facebookExpiration];

currentUser 变量存在,但所有属性均为 nil。

我是 Objective-C 的初学者,我很确定解决方案是显而易见的,但我现在无法修复它。

预先感谢您的帮助。

最佳答案

哦,我明白了。您只是为此方法创建 MOC,并且从未将其与您在该方法范围之外使用的上下文合并,因此插入后的更改不会保存。我敢打赌很多人只是浏览了一下就通过了,因为整个 MOC 实体名称/插入垃圾总是那么冗长。

通过我自己的类似于 createUserForLoginWithFacebookToken: 的方法,我传入了我用作 NSManagedObjectContext* 类型的附加方法参数的 MOC。我不会分配一个全新的 MOC,将一个对象插入其中,然后合并。通常,每个线程有一个 MOC。

关于ios - 返回对象不为空但为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23160591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com