- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
您好,我已将 RestKit 从 0.10.2 更新到 0.20.3。现在更新后,当 Web 服务中缺少对象时,RestKit 不会将它们从本地存储中删除。我知道 RestKit 0.20.x 支持它,但我无法配置它。我按照这里给出的例子。 http://restkit.org/api/latest/Classes/RKManagedObjectRequestOperation.html#overview
我也在 Stackoverflow 上关注了类似的问题。但目前还没有公认的答案。
这是我的 Json
{
"status": "Success",
"member_info": [
{
"family_id": "1",
"user_id": "1"
},
{
"family_id": "2",
"user_id": "1"
},
{
"family_id": "3",
"user_id": "1"
}
]
}
返回特定用户的所有家庭成员。以上 Json 适用于 user_id = 1
。现在我想如果为 user_id = 2
发送请求,那么之前的所有 3 个对象都应该从本地存储中删除,因为它们现在从 Json 中丢失了。这是 user_id = 2
{
"status": "Success",
"member_info": [
{
"family_id": "4",
"user_id": "2"
},
{
"family_id": "5",
"user_id": "2"
}
]
}
这就是我创建映射的方式。
[objectManager addResponseDescriptorsFromArray:@[
[RKResponseDescriptor responseDescriptorWithMapping:[self connectionsMapping]
method:RKRequestMethodPOST
pathPattern:@"familylist"
keyPath:@"member_info" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]];
[objectManager addFetchRequestBlock:^NSFetchRequest *(NSURL *URL) {
RKPathMatcher *pathMatcher = [RKPathMatcher pathMatcherWithPattern:@"familylist"];
NSDictionary *argsDict = nil;
BOOL match = [pathMatcher matchesPath:[URL relativePath] tokenizeQueryStrings:NO parsedArguments:&argsDict];
if (match) {
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"DBConnections"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"user_id == %@", [DBUser currentUser].user_id];
fetchRequest.predicate = predicate;
fetchRequest.sortDescriptors = @[ [NSSortDescriptor sortDescriptorWithKey:@"first_name" ascending:YES] ];
return fetchRequest;
}
return nil;
}];
- (RKEntityMapping *)connectionsMapping {
RKEntityMapping *connectionsMapping = [RKEntityMapping mappingForEntityForName:@"DBConnections" inManagedObjectStore:objectManager.managedObjectStore];
connectionsMapping.setDefaultValueForMissingAttributes = NO;
connectionsMapping.identificationAttributes = @[@"family_id"];
[connectionsMapping addAttributeMappingsFromDictionary:@{
@"family_id": @"family_id",
@"user_id": @"user_id",
}];
return connectionsMapping;
}
在谓词中,我正在使用 [DBUser currentUser].user_id
,它返回当前登录的 user_id
。这是我正在调用网络服务
[[RKObjectManager sharedManager] postObject:nil path:@"familylist" parameters:params
success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
NSLog(@"Objects are %@", mappingResult.array);
}];
我正在使用 postObject
而不是 getObjectsAtPath
,因为服务器需要 POST
请求方法。我做错了吗?或者需要做其他事情来删除孤立对象。感谢您的帮助。
最佳答案
最终通过调试RestKit一步步解决问题,在RKManagedObjectRequestOperation.m
中找到这段代码
if (! [[self.HTTPRequestOperation.request.HTTPMethod uppercaseString] isEqualToString:@"GET"]) {
RKLogDebug(@"Skipping deletion of orphaned objects: only performed for GET requests.");
return YES;
}
哦!当请求方法为 POST
时,RestKit 不会删除孤立对象。我也更改了接受 GET
请求的 Web 服务,它运行良好。其次,我使用的是 predicate
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"user_id == %@", [DBUser currentUser].user_id];
这是错误的,要删除除当前用户之外的所有对象,我必须附加 NOT
运算符,就像这样
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"user_id != %@", [DBUser currentUser].user_id];
所以predicate
不是你想要的,而是你不想要的。
关于ios - RestKit 没有从本地存储中删除孤立的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19951726/
我使用 RestKit 与 REST api 进行交互。对于某些操作,例如 HTTP PUT/POST/DELETE,我只关心响应状态代码(200 或 500 等),而不关心响应数据,即使 API 确
我在客户端和服务器端都有一个这样的响应对象: 客户端: //BaseResponse.h @interface BaseResponse : NSObject{ NSString *code;
我正在尝试将 RestKit 0.20 集成到我的项目中,例如,我使用 google rss 阅读器作为示例项目。 这是对 Xml 的响应 / /类别> & 这是我必须从中获取数据的 Xml。 RKO
我很难使用 CocoaPods 将 RestKit 安装到我的项目中。我收到未找到的错误。 我的 Pods.xcconfig 看起来像这样: GCC_PREPROCESSOR_DEFINITIONS
大多数 RESTful API 都会路由对资源的访问,例如 Rabbit 对象,如下所示: GET /rabbits <--- GET all rabbits.
问题 在 iOS 上完成 Restkit 的安装说明后,我收到 Apple Mach-o 链接器错误: 我的流程 我尝试按照此处的 Restkit 安装说明进行操作:https://github.co
我完全按照此处找到的这些步骤操作: http://www.raywenderlich.com/13097/intro-to-restkit-tutorial 但是....我得到了错误: 这可能是什么原
我正在尝试使用 RestKit 调用需要基本身份验证的端点。 RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[JSNCateg
我想用RestKit ,但我已经使用 Realm.io而不是 CoreData。 是否可以在 Realm.io 之上使用 RestKit? 最佳答案 你当然可以。从 RestKit 取回对象后: //
我没有找到任何方法来设置 restkit 0.20.0 的超时间隔。 任何人都可以帮助增加超时间隔。 谢谢 最佳答案 子类 RKHTTPRequestOperation 和实现方法 - (NSURLR
我正在尝试实现 RESTKit 0.20 操作队列,我在博客上读到 NSOperationQueue 也可用于创建操作队列。我想使用 RestKit 操作队列的 native 方法。 任何人都可以发布
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 8年前关闭。 Improve thi
我在这里做的事情很奇怪吗? 我的类别得到下载和映射, 产品也像日志记录所说的那样被下载和映射, 但是我的产品在每个分类下都是空的,谢谢! { "productsCategories" : [
我尝试了几乎所有的解决方案,但都不适合我。我在 Xcode 6 上收到此错误。我也更新了 cocoa pod ,也更新了 pod 文件。 安装更新后,我在下面添加了几行: [!] From now o
我正在尝试使用 Jenkins-CI 自动构建一个使用 Restkit 的 iOS 项目,显然,restkit 作为一个项目驻留在主项目中。该项目使用 XCode-IDE 成功构建。 但是当我使用 x
我在 Xcode 6.1 中开发项目。它工作正常,突然提示错误“未找到 Restkit/Restkit.h 文件”。从 $ 更改Architectures 后出现错误(ARCHS_STANDARD_3
我按照 github 上的说明进行操作页面但有问题(肯定是我:P)但是,您知道在 Xcode4 RestKit 中集成/使用的任何好的教程吗? 谢谢! 最佳答案 从此链接下载最新版本 http://r
我在尝试让 RestKit 构建和工作时遇到了麻烦。我收到可怕的“词法或预处理器问题:未找到 RestKit/RestKit.h 文件”消息。我使用 Xcode 4.2,我的项目适用于 iOS。 早些
RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:BASE_URL]]; PPPS
有没有办法使用对象管理器访问请求的成功块中的响应数据? [objectManager postObject:[User class] path:@"/users" parameters:nil suc
我是一名优秀的程序员,十分优秀!