Легкий!
Убедитесь, что ваша модель AWSModel имеет то же количество членов класса, что и количество ключей свойств JSON key paths. У моего нет члена класса и 2 ключа свойств.
Убедитесь, что имя каждого ключа свойства совпадает с именем члена класса. Опять же, у меня был ключ для «кода» и не было соответствующего свойства «код».
Для ясности посмотрите на функцию JSONKeyPathsByPropertyKey. Если вы видите @"abc": @"def"
, то в вашем классе должно быть свойство "abc", иначе преобразование JSON завершится ошибкой.
// Sample JSON returned by AWS API Gateway
{"code":200, "message":"OK", "data":{"phone":"(555) 555-1234"}}
// APISample.h
#import
#import
@interface APISample : AWSModel
// We count 4 class members
@property (nonatomic, strong) NSNumber *code;
@property (nonatomic, strong) NSString *message;
@property (nonatomic, strong) NSDictionary *data;
@property (nonatomic, strong) NSNumber *phone;
@end
// APISample.m
#import "APISample.h"
@implementation APISample
// We count 4 property keys
+ (NSDictionary *)JSONKeyPathsByPropertyKey {
return @{
@"code": @"code",
@"message": @"message",
@"data": @"data",
@"phone": @"data.phone"
};
}
Совет: обратите внимание, как вы можете получить доступ к ветке (данные как NSDictionary) и пройти по структуре документа с точечной нотацией (data.phone).
Бонус: рабочий пример Swift специально для вас.
// Swift sample code to access AWS API Gateway under iOS
// Create a client with public access
var client : APISampleClient = APISampleClient.defaultClient()
// Comment next line if your API method does not need API key
client.APIKey = "Your API key"
client.SampleMethodGet().continueWithBlock { (task : AWSTask) -> AnyObject? in
if task.error != nil {
print("Error \(task.error)")
}
else if task.result != nil {
let output = task.result as! APISample
print("Success \(output)")
}
return nil
}
person
rjobidon
schedule
18.03.2016