目前在学习Swift,3.0已发布,所以就从3.0开始吧,在编写项目中,遇到了字典转模型的需求,一直以来,比较习惯使用MJExtension,于是研究了一下,现在将研究结果发布:
创建的文件有:模型、字典转模型、Swift的调用文件,还有一个重要的文件——桥接文件,用来桥接OC和Swift,创建桥接文件还需要在TARGETS——Build Srttings——Objective-C Bridging Header中设置路径:
YCWhiteList-Bridging-Header.h文件中导入OC类的头文件:
#import "DictToModel.h"
#import "WhiteListItem.h"
接下来看代码:
模型 WhiteListItem.h
#import <Foundation/Foundation.h>
@interface WhiteListItem : NSObject
@property (strong, nonatomic) NSString *bankName;
@property (strong, nonatomic) NSString *companyId;
@property (assign, nonatomic) BOOL isSel;
@end
DictToModel.h
#import <Foundation/Foundation.h>
@interface DictToModel : NSObject
/** 模型数组 */
@property (strong, nonatomic) NSArray *items;
- (NSArray *)getItemsWithArray:(NSArray *)array;
@end
DictToModel.m
#import "DictToModel.h"
#import "WhiteListItem.h"
#import "MJExtension.h"
@implementation DictToModel
- (NSArray <WhiteListItem *>*)getItemsWithArray:(NSArray *)array{
_items = [WhiteListItem mj_objectArrayWithKeyValuesArray:array];
return _items;
}
@end
Swift中的使用:
JFBankWhiteListController.swift
import UIKit
class JFBankWhiteListController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let datas = [["bankName" : "湖北银行","companyId" : "1"],["bankName" : "招商银行","companyId" : "2"],["bankName" : "汉口银行","companyId" : "3"],["bankName" : "华夏银行","companyId" : "4"],["bankName" : "浦东银行","companyId" : "5"],["bankName" : "武汉银行","companyId" : "6"],["bankName" : "建设银行","companyId" : "7"],["bankName" : "工商银行","companyId" : "8"]]
let DTM = DictToModel()
let items : Array<WhiteListItem> = DTM.getItemsWith(datas) as! Array<WhiteListItem>
let bankItem = items[0];
let bankName = bankItem.bankName
print("----\(bankName)")
}
}
在使用的过程中,直接在swift中查看数组items,拿不到想要的结果,但是直接取模型属性是可以的,不知道是swift不完善还是哪里没处理好,后续再研究。