MJExtension之Swift——OC和Swift混编

目前在学习Swift,3.0已发布,所以就从3.0开始吧,在编写项目中,遇到了字典转模型的需求,一直以来,比较习惯使用MJExtension,于是研究了一下,现在将研究结果发布:

MJExtension之Swift——OC和Swift混编_第1张图片
Paste_Image.png

创建的文件有:模型、字典转模型、Swift的调用文件,还有一个重要的文件——桥接文件,用来桥接OC和Swift,创建桥接文件还需要在TARGETS——Build Srttings——Objective-C Bridging Header中设置路径:

MJExtension之Swift——OC和Swift混编_第2张图片
Paste_Image.png

YCWhiteList-Bridging-Header.h文件中导入OC类的头文件:


#import "DictToModel.h"
#import "WhiteListItem.h"

接下来看代码:
模型 WhiteListItem.h


#import 

@interface WhiteListItem : NSObject

@property (strong, nonatomic) NSString *bankName;
@property (strong, nonatomic) NSString *companyId;
@property (assign, nonatomic) BOOL isSel;

@end

DictToModel.h


#import 

@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 *)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 = DTM.getItemsWith(datas) as! Array
        
        let bankItem = items[0];
        let bankName = bankItem.bankName
        print("----\(bankName)")
    }
}

在使用的过程中,直接在swift中查看数组items,拿不到想要的结果,但是直接取模型属性是可以的,不知道是swift不完善还是哪里没处理好,后续再研究。

你可能感兴趣的:(MJExtension之Swift——OC和Swift混编)