gpt4 book ai didi

ios - Stackmob 与 Facebook 离线同步

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

我已经开始使用 StackMob 将 Facebook 集成到我的应用程序中。我一直在尝试使用 StackMob 的离线同步,但它似乎无法正常工作。

在 didFinishLaunchingWithOptions 中:

SM_CACHE_ENABLED = YES;
SMClient *client = [[SMClient alloc] initWithAPIVersion:@"0" publicKey:@"cc5f57c8-4a5d-424d-a3e1-0594c675cad8"];
SMCoreDataStore *coreDataStore = [client coreDataStoreWithManagedObjectModel:self.managedObjectModel];
coreDataStore.cachePolicy = SMCachePolicyTryCacheOnly;
_managedObjectContext = [coreDataStore contextForCurrentThread];

当用户使用 Facebook 登录时:

[[SMClient defaultClient] loginWithFacebookToken:FBSession.activeSession.accessTokenData.accessToken createUserIfNeeded:YES usernameForCreate:nil onSuccess:^(NSDictionary *result) {
NSLog(@"Logged in with StackMob!");
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"User"];
[self.managedObjectContext executeFetchRequest:fetchRequest returnManagedObjectIDs:NO onSuccess:^(NSArray *results) {
NSLog(@"users: %@",results);
} onFailure:^(NSError *error) {
NSLog(@"error: %@",error);
}];

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

问题是尽管用户已成功创建,但 fetchRequest 的结果是一个空数组。当我将缓存策略更改为 SMCachePolicyTryCacheElseNetwork 时,fetchRequest 的结果不是空数组。

为什么用户没有保存在缓存中?另外,我如何告诉 StackMob 仅将某些对象保存在缓存中?

非常感谢!

最佳答案

这听起来像是一个错误,您可以报告它 here .您可以解决此问题,这样您就不必通过使用每个请求缓存策略来全局设置 SMCachePolicyTryCacheElseNetwork。将您的获取请求更改为:

SMRequestOptions *options = [SMRequestOptions options];
options.cachePolicy = SMCachePolicyTryCacheElseNetwork;

[self.managedObjectContext executeFetchRequest:fetchRequest
returnManagedObjectIDs:NO
successCallbackQueue:dispatch_get_main_queue()
failureCallbackQueue:dispatch_get_main_queue()
options:options
onSuccess:(SMResultsSuccessBlock)successBlock
onFailure:(SMFailureBlock)failureBlock];

请注意,每个请求缓存策略需要最新的 2.1 SDK。

关于ios - Stackmob 与 Facebook 离线同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18037676/

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