создать класс Model для анализа без какой-либо библиотеки - PullRequest
0 голосов
/ 26 апреля 2018

Я хочу создать класс модели для JSON. Мой пример JSON приведен ниже

JSON ответ от API:

msg = '{"type": "TYPE_NM", "payload": {"responseCode": 0, "nextCheckTime": 30}}';

Я хочу создать кодируемые (Swift) свойства, как в Objective-C.

Я создал два интерфейса nsobject как «тип» и «полезная нагрузка». Ниже я даю свои отрывки из класса.

      //msg model 
      @interface MessageModel : NSObject

      @property (nonatomic) NSString *type;
      @property (nonatomic) Payload *payload;
      @end
      //for payload
      @interface Payload : NSObject

      @property (nonatomic) NSUInteger responseCode;
      @property (nonatomic) NSUInteger nextCheckTime;

     @end

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете преобразовать строку json в NSDictionary объект и использовать его для создания MessageModel

Payload

@interface Payload : NSObject

@property (nonatomic) NSUInteger responseCode;
@property (nonatomic) NSUInteger nextCheckTime;

@end

@implementation Payload

- (instancetype)initWithDictionary:(NSDictionary *)dict {
  self = [super init];

  if (self) {
    _responseCode = [dict[@"responseCode"] integerValue];
    _nextCheckTime = [dict[@"nextCheckTime"] integerValue];
  }

  return self;
}

@end

MessageModel

@interface MessageModel : NSObject

@property (nonatomic) NSString *type;
@property (nonatomic) Payload *payload;
@end

@implementation MessageModel

- (instancetype)initWithDictionary:(NSDictionary *)dict {
  self = [super init];

  if (self) {
    _type = dict[@"type"];
    _payload = [[Payload alloc] initWithDictionary:dict[@"payload"]];
  }

  return self;
}

- (instancetype)initWithJson:(NSString *)json {
  self = [super init];

  if (self) {
    NSData *data = [json dataUsingEncoding:NSUTF8StringEncoding];
    NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];

    _type = dict[@"type"];
    _payload = [[Payload alloc] initWithDictionary:dict[@"payload"]];
  }

  return self;
}

@end

Использование

NSString *input = @"{\"type\":\"TYPE_NM\",\"payload\":{\"responseCode\":0,\"nextCheckTime\":30}}";
MessageModel *model = [[MessageModel alloc] initWithJsonString:input];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...