Tag: restkit 0.20

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尝试更新logging时,才更新或保存被pipe理对象

我在我的Answers Entity没有被映射的syncState布尔属性。 我使用RkEntity Mapping从服务器获取Answer Entitylogging。 只有当已经存在的logging的syncState被Synced ,我才想save/update已经存在的logging,并且如果已经存在的logging的UnSynced是UnSynced ,忽略从服务器取回的logging。 我想重写willSave of Answers Entity并忽略保存,但该方法可以用来更新一些logging,而不是避免保存pipe理对象。

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失败:获取访问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 0.22:如何映射只有一个数组的firstObject?

我正在接收比需要更多的数据:我只想映射对象数组的第一个对象。 使用RestKit 0.22,如何映射下面的Json: { "name": "foobar", "tags": ["tag1", "tag2", "tag3"] } 使用以下模型: @property (nonatomic, retain) NSString *name; @property (nonatomic, retain) NSString *firstTag; 要映射name ,我有这样的代码: RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"MyObjectModel" inManagedObjectStore:[RKManagedObjectStore defaultStore]]; [mapping addAttributeMappingsFromDictionary:@{@"name": @"name"}]; 要将firstObject的tags映射到firstTag ,我不知道如何继续。 注意: MyObjectModel是一个NSManagedObject ,所以firstTag是@dynamic 。

POST请求后删除CoreData对象

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

RestKit比较本地对象和远程对象之前映射或实际插入到CoreData DB

所以我开始在RestKit中实现我的第二个项目,前一个很简单,只是从远程服务中提取东西,并填入我的核心数据库。 在当前的应用程序中,我正在开发一个同步function,所以我想在做一个插入之前validation东西,即比较本地存储中的一个对象与从远程服务获得的对象。 我正在读这个线程 ,发现我可以做到这样的事情。 所以我将这两种方法添加到我的模型中。 我知道只有一个方法就足够了,但问题是两个function。 @implementation News @dynamic title; @dynamic desc; @dynamic time; @dynamic category; @dynamic content; – (BOOL)validateValue:(inout __autoreleasing id *)ioValue forKeyPath:(NSString *)inKeyPath error:(out NSError *__autoreleasing *)outError{ return NO; } – (BOOL)validateTitle:(id *)ioValue error:(NSError **)outError{ return NO; } 实体映射代码, RKEntityMapping *userMapping = [RKEntityMapping mappingForEntityForName:NSStringFromClass(theClass) inManagedObjectStore:objectManager.managedObjectStore]; userMapping.performsKeyValueValidation = YES; userMapping.discardsInvalidObjectsOnInsert = YES; 所以我认为这个方法是每当一个对象被映射或被覆盖时触发的。 所以自我将包含当前的对象和* […]

RKObjectMapping和RKEntityMapping之间的关系

说我有这样的JSON : { "hits": 4056, "books": [ { "name": "Book 1" }, { "name": "Book 2" }, { "name": "Book 3" } ] } 我想将这个响应映射到BooksResponse对象: @interface BooksResponse @property (nonatomic, assign) NSInteger hits; @property (nonatomic, strong) NSArray* books; @end 其中books属性是CoreData Book对象的数组。 我正在使用RKObjectEntity来映射BooksResponse如下所示: RKObjectMapping* booksResponseMapping = [RKObjectMapping mappingForClass:[BooksResponse class]]; [booksResponseMapping addAttributeMappingsFromDictionary:@{ @"hits" : @"hits" }]; [booksResponseMapping addPropertyMapping:[RKRelationshipMapping […]

如何使用restkit忽略发布对象上的空属性

我正在恢复原来使用RestKit 0.10的旧项目,现在正在使用RestKit 0.24。 旧的版本仍然有效,但不幸的是RestKit 0.10不是64位兼容的,因此不会提交到AppStore(无论如何现在肯定是时候更新了)。 我无法获得正确发布的对象。 在RestKit 0.10中,没有值的属性没有被发送到服务器,而它在RestKit 0.20中似乎是。 我已经试过明确地设置assignsDefaultValueForMissingAttributes为NO ,但似乎没有什么差别。 服务器需要以下格式: {"response": {"assessment_id":"1","time_taken":"60"}, "answer": [ {"question_number": 1, "answer_value": 3}, {"question_number": 2, "answer_value": 2}, {"question_number": 3, "answer_value": 1}, ] } 我已经设置了一个CompletedAssessment对象,它包含一个Response对象和一个Answer对象数组。 (请注意,当从服务器接收到这些对象时,需要接收比需要发送更多的属性)。 @interface CompletedAssessment : NSObject { Response *response; NSArray *answers; } @interface Answer : NSObject { NSNumber *identifier; NSNumber *responseId; NSNumber *questionNumber; NSString *answerHistory; […]