Tag: restkit

RestKit使UI无响应

我使用的RestKit版本0.2,我看到它阻止用户界面(意思是,用户界面变得波涛汹涌/无响应)当我打电话给RKRequestOperation如下: – (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset { NSString *urlString = [NSString stringWithFormat:@"http://localhost:8080/models?offset=%d&rows=%d", _offset, _numRows]; NSURL *url = [NSURL URLWithString:urlString]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; RKObjectRequestOperation *operation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[_responseDescriptor]]; [operation setCompletionBlockWithSuccess:^(RKObjectRequestOperation *operation, RKMappingResult *result) { NSLog(@"Got models: %@", [result array]); [self addModelsToView:[results array]]; } failure:^(RKObjectRequestOperation *operation, NSError *error) { NSLog(@"FAILED!"); }]; […]

使用RestKit执行同步请求

– (BOOL)do_a_Restkit_request_and_return_a_boolean { [manager postObject:nil path:@"/mypath" parameters:@{@"password":password} success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { myResult = [mappingResult firstObject] == 5; } failure:^(RKObjectRequestOperation *operation, NSError *error) { }]; return myResult; } 你好我想做一个RestKit调用像上面的同步,以便在成功块的调用后返回myResult。

RestKit – fetchFromDataStore(caching)问题

我正在查看RestKit框架以及它如何工作。 然后我创build一个简单的项目,将调用Github api,并将数据加载到一个tableview中 – 在我读过一些教程后 – 关于从远程加载和映射它工作正常,并加载到tableview,但是当我试图从数据存储 – 离线模式 – 应用程序将崩溃,这是日志: 2012-07-29 16:21:41.611 RKGithubClient_FromZtoH[29181:c07] I restkit:RKLog.m:33 RestKit initialized… 2012-07-29 16:21:53.161 RKGithubClient_FromZtoH[29181:c07] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'executeFetchRequest:error: A fetch request must have an entity.' *** First throw call stack: (0x20b9022 0x197acd6 0xf15871 0x643c 0x42e5 0x3e14 0x4697 0x53838f 0x5385eb 0x5394ed 0x4a6a0c 0x4abf92 […]

RestKit postObject方法中的post对象和它返回的RKMappingResult之间有什么关系?

我一直在浏览RestKit的文档,但是我还没有能够解决RKMappingResult一些细节问题。 我有创buildNSManagedObject ,称为newUser ,并插入mainQueueManagedObjectContext的mainQueueManagedObjectContext的代码。 然后使用我的对象pipe理器的postObject:path:parameters:success:failure:方法将用户发布到服务器。 这似乎工作正常。 当发布请求完成时,我需要更新newUser托pipe对象上的一些字段,这些字段不会根据发布请求的结果进行映射。 传递到块中的mappingResult参数似乎具有与从服务器的响应中设置的所有字段正确映射的托pipe对象。 显然, mappingResult中的对象与我发布的对象不是同一个对象,因为它们不在同一个线程中。 如果我在发布之前保存新newUser ,请求完成后它们的objectID是否相同,并返回映射结果? 我在想象,新newUser和映射结果中的对象都指向存储在CoreData中的同一个对象,是正确的吗? 我问的原因是,这似乎并非如此。 如果我发出一个发布请求并同时保存新的newUser对象和映射结果中返回的对象,我最终在Core Data中有两个不同的对象,一个用于newUser ,一个用于映射结果。 我通过更改newUser对象和newUser对象上的字段,并确认它们都是独立更改来确认这一点。 此外,我下次获取时,获取两个用户对象。 我如何防止这种情况? 如果这是正确的,如果我崩溃会发生什么,请求还没有完成? CoreData中不会有一个存根对象吗? 如果请求失败,如何删除我创build的存根对象? 我可以在失败区域做类似以下的事情吗? dispatch_async(dispatch_get_main_queue(), ^{ [newUser.managedObjectContext deleteObject:newRegisteredUser]; }); 新用户在哪里,是我在mainQueue上创build的托pipe对象。 最后,如果我通过映射结果在后台线程中取回托pipe对象,则无法将返回的用户设置为UI用于从主线程获取信息的用户,那么如何通知用户界面改变它的用户? 我应该发布一个通知,告诉用户界面从Core Data重新获取活动用户吗? 更新关于重复的对象 我做了一些进一步的testing,我肯定会得到一个重复的对象,当职位返回。 我首先创build一个新的newUser并设置属性: HNGRRegisteredUser *newUser = [NSEntityDescription insertNewObjectForEntityForName:@"RegisteredUser" inManagedObjectContext:context]; newUser.firstName = @"John" newUser.lastName = @"Smith" newUser.gender = @"Male" newUser.email = @"js@email.com" newUser.hungrosityModel […]

用Restkit RKParams发送JSON请求

我需要发送一个JSON请求到一个REST服务。 我正在使用Restkit RKParams发送请求。 目前它的工作原理如下: [params setValue:@"-46.566393" forParam:@"checkin[lng]"]; [params setValue:@"-23.541576" forParam:@"checkin[lat]"]; 发送: { "checkin": { "lng":"-26.566393", "lat":"-63.541576" } } 现在我想形成这样的JSON数据(有更多的项目): { "checkin": { "lng":"-26.566393", "lat":"-63.541576", "votes": [ {"vote_id":28}, {"vote_id":11} ] } } 我将如何设置参数按要求工作? 有可能做到这一点?

iOS RestKitdateparsing

在一个老的iOS项目中,我不得不parsing格式为dd/MM/yyyydate,所以我把这些行放在我的AppDelegate的静态方法中,它按预期工作 // Set the Dateformatter for the Dates returned by Knowledge tt/mm/yyyy NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"dd/MM/yyyy"]; [[RKValueTransformer defaultValueTransformer] insertValueTransformer:dateFormatter atIndex:0]; 但是在实际的项目中,我的date格式与dd.MM.yyyy格式略有不同,所以我使用了相同的代码行,只是切换了date格式,但date没有被parsing。 对于这个date"ExamDate":"20.06.2014"我得到(NSDate *) _examDate = 0x08f7dcd0 2014-01-01 01:00:00 CETparsing后,我不明白为什么。 更新:我用这个代码做了一个小testing: NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"dd.MM.yyyy"]; NSDate *date = [dateFormatter dateFromString:@"20.06.2014"]; DLog(@"Date: %@", date); 并得到日志: Date: 2014-06-19 22:00:00 +0000

RestKit不会在64位模拟器中映射BOOL

我需要帮助了解下面的错误。 我有一个BOOL在我的NSObject定义为: @property (nonatomic) BOOL isOpen; 在我的课程中,我使用: [mapping addAttributeMappingsFromDictionary:@{…… @"isOpen": @"isOpen" ……}]; 对于我所有使用iPhone4S和原始iPhone5的testing,已经完美工作了几周。 作为我在64位设备上的模拟器上testing的最后一个testing,我得到以下错误: restkit.object_mapping:RKMappingOperation.m:440 Failed transformation of value at keyPath 'isOpen' to representation of type '__NSCFBoolean': Error Domain=org.restkit.RKValueTransformers.ErrorDomain Code=3002 "Failed transformation of value '1' to __NSCFBoolean: none of the 2 value transformers consulted were successful." UserInfo=0x10cba1c00 {NSLocalizedDescription=Failed transformation of value '1' to __NSCFBoolean: none […]

为什么RKNSJSONSerialization在iOS 6上崩溃?

我只在iOS 6上看到了RKNSJSONSerialization的崩溃 – 而不是在iOS 7上。我正在使用RestKit 0.20.3,这种情况对我来说是相当一致的。 即使当我提出相同的请求并获得iOS 6/7的相同响应时,它也可以在iOS 7上正常工作,但在iOS 6上会崩溃。 这是崩溃 – 这是一个EXC_BAD_ACCESS: http ://crashes.to/s/2610b639062 RestKit的RKNSJSONSerialization中的相关(崩溃)行是return: + (id)objectFromData:(NSData *)data error:(NSError **)error { return [NSJSONSerialization JSONObjectWithData:data options:0 error:error]; } 所以也许它根本就不是RestKit – 也许是NSJSONSerialization。 我用僵尸工具描述了应用程序,发现这个: “一个Objective-C消息被发送到一个解除分配的”CFString(immutable)“对象(僵尸),地址为0x16851250。 难道我做错了什么?

如何获取cookie并将其用于POST(iOS)等其他请求?

我之前的问题是关于每次loginWeb服务(如发布链接或上传图片)时都必须login的问题。 菲利普回答说,我必须使用Cookie而不是每个请求的login过程。 我发现这种获取cookie的方法: – (void)getCookies { NSHTTPURLResponse * response; NSError * error; NSMutableURLRequest *request; request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://MyWebsite.com/login.php"] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:120]; NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]); NSArray * all = [NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:[NSURL URLWithString:@"http://MyWebsite.com/login.php"]]; NSLog(@"%d", all.count); for (NSHTTPCookie *cookie in all) { NSLog(@"Name: %@ : […]

Objective-C类没有加载 – 如何debugging

我有两个RestKit框架的项目。 一个项目工作没有问题,但另一个项目失败,只要使用RestKit框架。 我发现失败的代码是这样的: return [anNSString MD5]; MD5方法是一个类别的方法,并像这样导入: #import "NSString+MD5.h" 但是,在一个项目中,我不断收到以下错误: -[__NSCFString MD5]: unrecognized selector sent to instance 0x88a3390 我了解类别的基础知识,并且可以在运行时加载它们,但是我不明白为什么在这种情况下不能加载类别。 这些是github上的文件: NSString + MD5.m , NSString + MD5.h ,