Ios NSLocalizedDescription=预期状态代码在(200-299)中,得到422}

Ios NSLocalizedDescription=预期状态代码在(200-299)中,得到422},ios,objective-c,request,restkit,Ios,Objective C,Request,Restkit,我想做一个广告。我按照我认为正确的方式设置了一切,但是当我点击玻色子“地籍anuncio”时,它返回这个错误“Get 422”。已经对错误进行了研究,但根本无法修复。 这里有人经历过这一切 这是我的网络服务 #import "JVWebService.h" #import <RestKit/RestKit.h> #import "AppDelegate.h" #import "JVUtils.h" #import "Ads.h" static NSString *kServerUR

我想做一个广告。我按照我认为正确的方式设置了一切,但是当我点击玻色子“地籍anuncio”时,它返回这个错误“Get 422”。已经对错误进行了研究,但根本无法修复。 这里有人经历过这一切

这是我的网络服务

#import "JVWebService.h"
#import <RestKit/RestKit.h>
#import "AppDelegate.h"
#import "JVUtils.h"
#import "Ads.h"

static NSString *kServerURL = @"http://localhost:3000";

@interface JVWebService ()
@property (strong, nonatomic) RKObjectManager *restKitObjectManager;
@property (strong, nonatomic) NSDictionary *adAttributes;
@property (strong, nonatomic) NSDictionary *postAdAttributes;
@property (strong, nonatomic) NSDictionary *userAttributes;
@property (strong, nonatomic) NSDictionary *postUserAttributes;
@end

#define kSuccessStatusCode RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)

@implementation JVWebService

+ (instancetype)sharedService {
    static JVWebService *sharedService = nil;
    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{
        sharedService = [[self alloc] init];

        [AFNetworkActivityIndicatorManager sharedManager].enabled = YES;
        sharedService.restKitObjectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:kServerURL]];
        [sharedService.restKitObjectManager.HTTPClient setAuthorizationHeaderWithUsername:[[[AppDelegate sharedDelegate] currentUser] email]
                                                                                 password:[[[AppDelegate sharedDelegate] currentUser] password]];
    });
    return sharedService;
}

#pragma mark - User

- (void)getUserForEmail:(NSString *)email andPassword:(NSString *)password {
    RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:User.class];
    [objectMapping addAttributeMappingsFromDictionary:self.userAttributes];

    RKObjectMapping *requestMapping = [RKObjectMapping requestMapping];
    [requestMapping addAttributeMappingsFromDictionary:self.postUserAttributes];

    NSString *path = @"/users/sign_in.json";

    RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping
                                                                                   objectClass:User.class
                                                                                   rootKeyPath:@"user"
                                                                                        method:RKRequestMethodAny];
    RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:objectMapping
                                                                                            method:RKRequestMethodAny
                                                                                       pathPattern:path
                                                                                           keyPath:@"user"
                                                                                       statusCodes:kSuccessStatusCode];
    [self.restKitObjectManager addRequestDescriptor:requestDescriptor];
    [self.restKitObjectManager addResponseDescriptor:responseDescriptor];

    User *user = [User new];
    user.email = email;
    user.password = password;

    [[NSUserDefaults standardUserDefaults] setObject:[[NSUUID UUID] UUIDString] forKey:@"authencity_token"];
    NSDictionary *params = @{@"authenticity_token" : [[NSUserDefaults standardUserDefaults] objectForKey:@"authencity_token"]};

    [self.restKitObjectManager.HTTPClient setAuthorizationHeaderWithUsername:email password:password];
    [self.restKitObjectManager postObject:user path:path parameters:params success:^(RKObjectRequestOperation *operation,
                                                                                     RKMappingResult *result){
        User *user = (User *)result.array.firstObject;
        user.password = password;
        [[AppDelegate sharedDelegate] login:user];

        [[AppDelegate sharedDelegate] setLoggedViaFacebook:NO];

        if ([self.serviceDelegate respondsToSelector:@selector(successfulRequestDidReturnObject:)])
            [self.serviceDelegate successfulRequestDidReturnObject:user];

    } failure:^(RKObjectRequestOperation *operation, NSError *error){
        RKLogError(@"Operation failed with error: %@", error);

        if ([self.serviceDelegate respondsToSelector:@selector(requestDidFailWithError:)])
            [self.serviceDelegate requestDidFailWithError:error];
    }];

    [self.restKitObjectManager removeResponseDescriptor:responseDescriptor];


    }





- (void)postAd:(Ads *)ad {
    NSString *path = @"/ads.json";

    RKObjectMapping *objectMapping = [RKObjectMapping mappingForClass:Ads.class];
    [objectMapping addAttributeMappingsFromDictionary:self.adAttributes];

    RKObjectMapping *requestMapping = [RKObjectMapping requestMapping];
    [requestMapping addAttributeMappingsFromDictionary:self.postAdAttributes];

    RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping
                                                                                   objectClass:Ads.class
                                                                                   rootKeyPath:@"ad"
                                                                                        method:RKRequestMethodAny];
    RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:objectMapping
                                                                                            method:RKRequestMethodAny
                                                                                       pathPattern:path
                                                                                           keyPath:@"ad"
                                                                                       statusCodes:kSuccessStatusCode];

    [self.restKitObjectManager addRequestDescriptor:requestDescriptor];
    [self.restKitObjectManager addResponseDescriptor:responseDescriptor];

    NSMutableURLRequest *urlRequest = [self.restKitObjectManager multipartFormRequestWithObject:ad method:RKRequestMethodPOST path:path parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

//        NSArray *photosArray = ad.photos[0];
//        for(int i = 0; i < photosArray.count; i++) {
//            
//            NSString *name = [NSString stringWithFormat:@"ad[photos_attributes][%i][picture]", i];
//            NSString *fileName = [NSString stringWithFormat:@"photo%i.jpg", i];
//            [formData appendPartWithFileData:UIImagePNGRepresentation(photosArray[i])
//                                        name:name
//                                    fileName:fileName
//                                    mimeType:@"image/jpg"];
//        }
    }];

    RKObjectRequestOperation *operation = [self.restKitObjectManager objectRequestOperationWithRequest:urlRequest
                                                                                               success:^(RKObjectRequestOperation *operation, RKMappingResult *result) {
                                                                                                   if ([self.serviceDelegate respondsToSelector:@selector(successfulRequestDidReturnObject:)])
                                                                                                       [self.serviceDelegate successfulRequestDidReturnObject:nil];

                                                                                               } failure:^(RKObjectRequestOperation *operation, NSError *error) {
                                                                                                   if ([self.serviceDelegate respondsToSelector:@selector(requestDidFailWithError:)])
                                                                                                       [self.serviceDelegate requestDidFailWithError:error];
                                                                                               }];
    [self.restKitObjectManager enqueueObjectRequestOperation:operation];

    [self.restKitObjectManager removeRequestDescriptor:requestDescriptor];
    [self.restKitObjectManager removeResponseDescriptor:responseDescriptor];
}



- (NSDictionary *)adAttributes {
    return @{
             @"id" : @"_id",
             @"title" : @"title",
             @"price" : @"price",
             @"local" : @"local",
             @"description" : @"especification"
//             @"categories" : @"categories",
//             @"photos" : @"photos",
//             @"latitude" : @"latitude",
//             @"longitude" : @"longitude"
             };
}

- (NSDictionary *)postAdAttributes {
    return @{
             @"_id" : @"id",
             @"title" : @"title",
             @"price" : @"price",
             @"local" : @"local",
             @"especification" : @"description"
//             @"categories" : @"category_ids",
//             @"user_id" : @"user_id",
//             @"latitude" : @"latitude",
//             @"longitude" : @"longitude"
             };
}

- (NSDictionary *)userAttributes {
    return @{
             @"id" : @"_id",
             @"email" : @"email",
             @"name" : @"name",
             @"avatar" : @"profileImageUrl",
             @"phone" : @"phone",
             @"password" : @"password",
             @"contact_pref" : @"communicationPreference",
             @"products_alerts" : @"productsAlerts"
             };
}

- (NSDictionary *)postUserAttributes {
    return @{
             @"_id" : @"id",
             @"email" : @"email",
             @"name" : @"name",
             @"phone" : @"phone",
             @"password" : @"password",
             @"password" : @"password_confirmation",
             @"communicationPreference" : @"contact_pref"
             };
}
@end
#导入“JVWebService.h”
#进口
#导入“AppDelegate.h”
#导入“JVUtils.h”
#导入“Ads.h”
静态NSString*kServerURL=@”http://localhost:3000";
@接口JVWebService()
@属性(强,非原子)RKObjectManager*restKitObjectManager;
@属性(强,非原子)NSDictionary*ADAttribute;
@属性(强,非原子)NSDictionary*PostadatAttribute;
@属性(强,非原子)NSDictionary*userAttributes;
@属性(强,非原子)NSDictionary*PositureAttribute;
@结束
#定义kSuccessStatusCode RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)
@JVWebService的实现
+(instancetype)共享服务{
静态JVWebService*sharedService=nil;
静态调度一次;
一次发送(一次发送)^{
sharedService=[[self alloc]init];
[AFNetworkActivityIndicatorManager sharedManager].enabled=YES;
sharedService.restKitObjectManager=[RKObjectManager管理器WithBaseUrl:[NSURL URLWithString:kServerURL]];
[sharedService.restKitObjectManager.HTTPClient setAuthorizationHeaderWithUsername:[[[AppDelegate sharedDelegate]currentUser]电子邮件]
密码:[[AppDelegate sharedDelegate]当前用户]密码]];
});
返回共享服务;
}
#pragma标记-用户
-(void)getUserForEmail:(NSString*)电子邮件和密码:(NSString*)密码{
RKObjectMapping*objectMapping=[RKObjectMappingForClass:User.class];
[ObjectMappingAddAttributeMappingsFromDictionary:self.userAttributes];
RKObjectMapping*requestMapping=[RKObjectMapping requestMapping];
[requestMapping addAttributeMappingsFromDictionary:self.positionAttribute];
NSString*path=@“/users/sign_in.json”;
RKRequestDescriptor*requestDescriptor=[RKRequestDescriptor requestDescriptor WithMapping:requestMapping
objectClass:User.class
rootKeyPath:@“用户”
方法:RKRequestMethodAny];
RKResponseDescriptor*responseDescriptor=[RKResponseDescriptor responseDescriptor WithMapping:objectMapping
方法:RKRequestMethodAny
路径模式:路径
密钥路径:@“用户”
状态代码:ksuccesstatuscode];
[self.restKitObjectManager addRequestDescriptor:requestDescriptor];
[self.restKitObjectManager添加responseDescriptor:responseDescriptor];
用户*User=[User new];
user.email=电子邮件;
user.password=密码;
[[NSUserDefaults standardUserDefaults]设置对象:[[NSUID UUID]UUIString]forKey:@“身份验证令牌”];
NSDictionary*params=@{@“Authentity_token”:[[NSUserDefaults standardUserDefaults]objectForKey:@“Authentity_token”]};
[self.restKitObjectManager.HTTPClient setAuthorizationHeaderWithUsername:电子邮件密码:密码];
[self.restKitObjectManager postObject:用户路径:路径参数:参数成功:^(RKObjectRequestOperation*操作,
RKMappingResult*结果){
User*User=(User*)result.array.firstObject;
user.password=密码;
[[AppDelegate sharedDelegate]登录:用户];
[[AppDelegate sharedDelegate]setLoggedViaFacebook:NO];
if([self.serviceDelegate respondsToSelector:@selector(successfulRequestDidReturnObject:)]))
[self.serviceDelegate successfulRequestDidReturnObject:用户];
}失败:^(RKObjectRequestOperation*操作,NSError*错误){
RKLogError(@“操作失败,错误:%@”,错误);
if([self.serviceDelegate respondsToSelector:@selector(requestDidFailWithError:)]))
[self.serviceDelegate requestDidFailWithError:错误];
}];
[self.restKitObjectManager removeResponseDescriptor:responseDescriptor];
}
-(无效)邮递:(广告*)广告{
NSString*path=@“/ads.json”;
RKObjectMapping*objectMapping=[RKObjectMappingForClass:Ads.class];
[ObjectMappingAddAttributeMappingsFromDictionary:self.adAttributes];
RKObjectMapping*requestMapping=[RKObjectMapping requestMapping];
[requestMapping addAttributeMappingsFromDictionary:self.PostadatAttributes];
RKRequestDescriptor*requestDescriptor=[RKRequestDescriptor requestDescriptor WithMapping:requestMapping
objectClass:Ads.class
rootKeyPath:@“ad”
方法:RKRequestMethodAny];
RKResponseDescriptor*responseDescriptor=[RKResponseDescriptor responseDescriptor WithMapping:objectMapping
方法:RKRequestMethodAny
路径模式:路径
密钥路径:@“ad”
#import "NewAdViewController.h"
#import "Ads.h"
#import "JVUtils.h"
#import "JVWebService.h"
#import "AppDelegate.h"

@interface NewAdViewController ()

@end

@implementation NewAdViewController

- (void)viewDidLoad {
    [super viewDidLoad];

}

- (IBAction)signUp:(id)sender {


    if (self.titleField.text.length <= 0) {
        [JVUtils showMessage:@"Falta algo ae eem =D =D fdp." withTitle:@"Opa!"];
    } else if (self.priceField.text.length <= 0) {
        [JVUtils showMessage:@"Falta algo ae eem =D =D fdp" withTitle:@"Opa!"];
    } else if (self.localField.text.length <= 0) {
        [JVUtils showMessage:@"Falta algo ae eem =D =D fdp" withTitle:@"Opa!"];
    } else if (self.descriptionField.text.length <= 0) {
        [JVUtils showMessage:@"Falta algo ae eem =D =D fdp" withTitle:@"Opa!"];
    } else {
            Ads *newAd = [Ads new];
            newAd.title = self.titleField.text;
            newAd.price = self.priceField.text;
            newAd.local = self.localField.text;
            newAd.especification = self.descriptionField.text;


            [[JVWebService sharedService] setServiceDelegate:self];
            [[JVWebService sharedService] postAd:newAd];

        }
    }


- (void)successfulRequestDidReturnObject:(NSObject *)object {

    [JVUtils showMessage:@"Anuncio cadastrado =D" withTitle:@"hadoukeeeen !"];

    [[AppDelegate sharedDelegate] setCurrentUser:(User *)object];

    [self dismissViewControllerAnimated:YES completion:nil];


}

- (void)requestDidFailWithError:(NSError *)error {

    [JVUtils showMessage:error.localizedDescription withTitle:@"Errohue"];
}


-(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
}





@end