Tag: restkit

iOS:RESTKit与CoreData同步数据

设置:RESTFull API与MySQL数据库在后端。 我正在使用RESTKit v.20.3来进行API调用。 我即将切换到核心数据。 题: 如果我在远程数据库中有10个对象,并且第一次使用GET进行获取,我将把所有10个对象都取回并存储在Core Data中。 当我做出后续的提取请求时,我该如何告诉RESTkit只下载新的对象,而不是先前下载的对象? 最佳实践方法请!

Restkit属性映射失败转换错误

这是我的示例代码如下所示: { "name": "Ahmad Mansour", "subjects": [ { "parent_subject_name": "Arabic", "subject_name": "Shafahi", "exams": [ { "score": "30.00", "exam_name": "Sa3i 1 " }, { "score": "50.00", "exam_name": "sa3i 2" }, { "score": "100.00", "exam_name": "First Semester Exam" } ] }, { "parent_subject_name": "Arabic", "subject_name": "Khati", "exams": [ { "score": "50.00", "exam_name": "Sa3i 1 " }, { […]

从0.10到0.20的问题升级RestKit

我无法弄清楚如何纠正从RestKit 0.10升级到0.20后得到的错误…任何人都可以帮忙吗? 谢谢! ViewController.m – (void)viewDidLoad { // Wain, I added this RKResponseDescriptor RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:[Feed mapping] method:RKRequestMethodAny pathPattern:nil keyPath:@"springs" statusCodes:nil]; // These 4 lines has errors and needs to be fixed // No visible @interface for 'RKObjectManager' declares the selector 'loader' [[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/springs/?apikey=xxx" usingBlock:^(RKObjectLoader *loader) { loader.onDidLoadObjects = ^(NSArray *objects){ springs […]

RestKit映射与NSDictionary和NSArray对象

{"coord":{"lon":72.62,"lat":23.03},"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10n"}],"base":"stations","main":{"temp":303.082,"pressure":1014.85,"humidity":66,"temp_min":303.082,"temp_max":303.082,"sea_level":1018.46,"grnd_level":1014.85},"wind":{"speed":1.07,"deg":340.501},"rain":{"3h":0.435},"clouds":{"all":76},"dt":1475333911,"sys":{"message":0.0033,"country":"IN","sunrise":1475283682,"sunset":1475326567},"id":1279233,"name":"Ahmadabad","cod":200} 以上是我的API响应。 现在我想映射“天气”和“名称”,并希望同一个对象作为响应。 我可以创build上课 @interface WeatherStatus : NSObject @property (nonatomic, copy) NSString *name; @property (nonatomic, strong) WeatherInfo *info; @end 和 @interface WeatherInfo : NSObject @property (nonatomic, copy) NSString *description; @property (nonatomic, copy) NSString *icon; 下面是映射代码。 RKObjectMapping *weatherInfo = [RKObjectMapping mappingForClass:[WeatherInfo class]]; [weatherInfo addAttributeMappingsFromDictionary:@{@"description": @"description", @"icon": @"icon"}]; RKObjectMapping *weatherStatus = [RKObjectMapping mappingForClass:[WeatherStatus class]]; [weatherStatus addAttributeMappingsFromArray:@[@"name"]]; […]

RestKit多对多关系在主表中的连接表和空值保存新行

我使用RestKit从本地caching来自远程服务器的数据。 在其中,我有类别<< – >>新闻之间的多对多关系。 映射似乎工作正常,尽pipe它也保存我的类别表中的空值(它也保存了正确的类别)。 如下图所示: 它似乎保存30空行,我也有30(非空)行在我的连接表,所以这里可能有一个相关性。 我得到的JSON如下所示: "categories":[{"category_id":1},{"category_id":4}] 我有两个从NSManagedObjectinheritance的自定义模型对象。 @interface News : NSManagedObject […] @property (nonatomic, retain) NSSet *categories; @end @interface Category : NSManagedObject […] @property (nonatomic, retain) NSSet *news; @end 两者都使用@dynamic 。 我的映射如下所示: RKManagedObjectMapping *categoryMapping = [RKManagedObjectMapping mappingForClass:[Category class] inManagedObjectStore:objectManager.objectStore]; categoryMapping.primaryKeyAttribute = @"categoryId"; categoryMapping.rootKeyPath = @"categories"; [categoryMapping mapKeyPath:@"id" toAttribute:@"categoryId"]; […] RKManagedObjectMapping* newsMapping = […]

Restkit失败:获取访问json返回

我正在使用Restkit .20,并尝试获取在故障块中返回的错误对象。 我已经尝试了下面的两个都返回(null)的错误对象。 RKObjectMapping *errorMapping = [RKObjectMapping mappingForClass:[RKErrorMessage class]]; [errorMapping addPropertyMapping: [RKAttributeMapping attributeMappingFromKeyPath:nil toKeyPath:@"errorMessage"]]; RKResponseDescriptor *errorDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:errorMapping pathPattern:nil keyPath:@"error" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassClientError)]; [self.objectManager addResponseDescriptorsFromArray:@[errorDescriptor]]; 和 RKObjectMapping *errorMapping = [RKObjectMapping mappingForClass:[RKErrorMessage class]]; [errorMapping addPropertyMapping:[RKAttributeMapping attributeMappingFromKeyPath:@"error" toKeyPath:@"errorMessage"]]; [self.objectManager addResponseDescriptor:[RKResponseDescriptor responseDescriptorWithMapping:errorMapping pathPattern:nil keyPath:@"error" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassClientError)]]; 这是在我的失败块打印出“errorMessage:(null)” failure:^(RKObjectRequestOperation *operation, NSError *error) { NSLog(@"errorMessage: %@", [[error userInfo] objectForKey:RKObjectMapperErrorObjectsKey]); } 这里是从服务器的JSON返回的内容。 { […]

Restkit + Objective-c – 多次调用同一个Web服务

我是restkit和iOS的新手。 我正在使用xcode 4.2和RestKit 0.2。 我一直在开发一个iPhone应用程序,它与我创build的一些REST Web服务进行通信,现在我正面临一个问题。 我的一些networking服务打算多次打电话。 第一个请求运行没有问题,但是当我再次尝试拨打电话时,出现此错误: 'NSInternalInconsistencyException',原因:'不能为现有的请求描述符添加同一个对象类的请求描述符。 我明白这个错误意味着什么,但还没有find一种方法来实现可重用的调用。 我有一种感觉,我做错了。 以下是我用来调用Web服务的function之一: – (void) restAddPlayer:(addPlayer*)add block:(void (^)(id))block{ // Load the object model via RestKit RKObjectManager *objectManager = [RKObjectManager sharedManager]; RKObjectMapping *categoryRequestMapping = [RKObjectMapping requestMapping]; [categoryRequestMapping addAttributeMappingsFromDictionary:@{@"gName": @"groupName",@"pass":@"pass"}]; RKObjectMapping *reqMapping = [RKObjectMapping requestMapping]; [reqMapping addAttributeMappingsFromDictionary:@{@"plName": @"playerName"}]; [reqMapping addRelationshipMappingWithSourceKeyPath:@"groupInfo" mapping:categoryRequestMapping]; RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:reqMapping objectClass:[addPlayer class] […]

向RestKit映射添加一对一外键连接的问题

我试图添加一个连接到RestKit映射,但没有成功。 我的JSON如下所示: { parent: { token: "token" title: "title", description: "description", child_id: 1 } } 我的CoreDatascheme定义Parent ManagedObject在child项下有一个Child关系(和相反)。 在CoreData中已经有一个相应的Child对象之后, Parent映射发生了,所以这不是问题。 为了解决这个问题,我在networking上跟踪了一些链接和讨论,但都没有成功。 什么是正确的方法做到这一点,而不必添加一个child_id属性Parent (有人声称他们这样做,但它看起来不对我)。 假设我有这个映射: – (RKEntityMapping *)parentResponseMapping { RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"Parent" inManagedObjectStore:[self myStore]]; [mapping addAttributeMappingsFromArray:@[@"title", @"description"]]; mapping.identificationAttributes = @[@"token"]; return mapping; } 起初我尝试添加像这样的连接: NSEntityDescription *parentEntity = [NSEntityDescription entityForName:@"Parent" inManagedObjectContext:[self myContext]]; NSRelationshipDescription *childRelationship = [parentEntity […]

RestKit值转换器validation块未被调用

我正在使用RestKit(最新版本0.23.1),我已经定义了一个string值到数字字段之间的自定义转换器,如下所示: mapping.valueTransformer = [RKBlockValueTransformer valueTransformerWithValidationBlock:^BOOL(__unsafe_unretained Class inputValueClass, __unsafe_unretained Class outputValueClass) { return [inputValueClass isSubclassOfClass:[NSString class]]; } transformationBlock:^BOOL(id inputValue, __autoreleasing id *outputValue, __unsafe_unretained Class outputClass, NSError *__autoreleasing *error) { if (![inputValue isKindOfClass:[NSString class]]) { return NO; } // conversion logic follows… return YES; }]; 转换工作正常,但是validation块没有被调用(我已经设置了一个断点来validation),这迫使我在transformationBlock中检查inputValue确实是NSString的一个实例。 为什么validation块没有被调用,我做错了什么? 我在RestKit GitHub页面找不到任何问题。

POST请求后删除CoreData对象

我正在使用RestKit 0.20.3和CoreDatacaching我的Web服务的结果。 我需要从CoreData中删除所有不在响应中的对象,所以我使用[RKObjectManager addFetchRequestBlock] 。 一切工作正常,当我做GET请求,但是当我做POST请求的对象不被删除在CoreData中,我想,因为deleteLocalObjectsMissingFromMappingResult只与GET请求完成。 我明白,在RESTfull体系结构中,POST请求用于更新服务器端的实体,但在我的情况下,Web服务提供searchfunction,并在POST中占用大量可选参数。 有没有办法configurationRestKit甚至在POST请求后进行删除? 如果没有,我是否需要在每个请求结束时手动删除,还是有另一种更好的方法?