Swift实际开发中遇到的小问题

从上周开始, 正式使用Swift语言进行实际项目的开发, 虽然之前Swift的语法已经了解过, 并且写过几个简单的小Demo, 但是在实际应用到了公司项目中还是遇到了一些小问题. 主要是Swift与OC语法对比下的一些用法不同, 还有一些就是混编的问题.

  1. OC项目, 新建Swift文件,没有自动生成桥接文件
    这个问题只基于本人公司项目的实际情况进行说明.(OC项目添加Swift文件)
  • 打开工程文件->BuildSetting 检查是否已经存在了Objective-C Bridging Header


    1

    这个是要导入了桥接文件才会生成的, 所以如果之前你的项目中创建过Swift文件, 也就是生成过了桥接文件, 即时你之后把桥接文件删掉了, 再次导入Swift文件, 它是不会给你重新自动生成桥接文件的.

  • 解决:

  • 把Objective-C Bridging Header 后面对应的路径删除, 然后在重新创建Swift文件, 这时就会提示创建桥接文件了.

  • 自己手动创建一个桥接文件, 然后手动更改Objective-C Bridging Header后面的为路径为你手动创建的桥接文件的路径.

  1. Swift调用OC的Category
    先说一下在混编时OC类和Swift类的互相调用:
    Swift调用OC --- 在创建的桥接文件中导入OC类的.h文件 #import "xxx.h"
    OC调用Swift --- 要被OC调用的Swift类要做一个声明,用到@objc
    下面是新建的一个Swift类 , 如果要使得此类能被OC累调用, 需要添加@objc(TestClass)(括号内为类名)
    import UIKit
    @objc(TestClass)
    class TestClass: NSObject {
    }

**下面说回重点 **
这个问题我用实际代码来说可能会清楚一些.下面是我的一个OC的Category
// NSDictionary+Handle.h
// Created by sunxb on 16/12/2.
// Copyright © 2016年 sunxb. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface NSDictionary (Handle)
- (void)handleData;
@end
这是一个NSDictionary的Category, 按照之前的Swift调用OC类的规则, 我们应该在桥接文件中#import "NSDictionary+Handle.h", 然后编译一下, 然后在Swift中实例一个字典,然后调用.
注意: Swift的类型安全问题, 我们在Swift中创建的是Dictionary, 虽然系统在底层做了Dictionary与NSDictionary的桥接, 我们在实际使用时仍要做手动的类型转换, 就像这样let dict = ["key":"value"] as! NSDictionary , 如果不强制转为NSDictionary是无法调用OC Category中的方法的. 或者新建一个OC的类, 把Category中的方法在封装一次, Dictionary实例的对象当做参数传进去.
#import "DealDictionary.h"
#import "NSDictionary+Handle.h"
@implementation DealDictionary
+ (void)dealDictionary:(NSDictionary *)dict {
[dict handleData];
}
@end
直接调用这个类的类方法, 把需要处理的字典直接传进来就ok, 字典也无需做强转, 不过有点麻烦, 建议一些简单的Category就直接用Swift重新写成这个类的extention, 类型转化页ok, 随心情.

  1. pod ‘SwiftyJSON’ 遇到的问题
    需要在Podfile文件中添加use_frameworks! ,导入成功后编译项目会报错--.h文件找不到 . (影响了之前导入的三方库的使用)
    **原因: cocoapods 里面不使用 use_frameworks!, 则是通过static libraries 这个方式来管理pod的代码. 而如果使用了use_frameworks!, 则cocoapods 使用frameworks 来取代static libraries 方式. **
    解决方法:
  • 全工程里面更改某些库的导入方式, 具体分析是 #import "" #import <>这两种导入方式的哪一种
  • 不用cocoapods, 直接把项目拖进工程里面.
  1. 一些Swift与OC不同的使用方法
    OC: isKindOfClass --- Swift : 直接用 is
    OC: boolValue等 --- Swift: 先把String转为NSString类型, 在.booValue

持续更新中

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 148,827评论 1 317
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 63,511评论 1 266
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 99,318评论 0 218
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,108评论 0 189
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,112评论 1 266
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,387评论 1 185
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 30,905评论 2 283
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,657评论 0 177
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,144评论 0 223
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,744评论 2 225
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,100评论 1 236
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,565评论 2 222
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,041评论 3 216
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,769评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,301评论 0 178
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,173评论 2 239
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,313评论 2 242

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,528评论 4 58
  • 曾经,你有一个梦,但是它实现不了,你放弃了。现在,别人有一个梦,或者你认为它是个梦,跟你的梦相似的梦,实现了。你觉...
    乱七八糟阅读 216评论 1 1
  • 游麦积山石窟 王学明 那苍然眩晕般耸立的似乎不是山,而是经数千年风...
    山之尖阅读 445评论 1 2
  • 缘来缘往,总有人留下一段段情在世上,接受了便是亲人,朋友,爱人。我们出生到最终走向死亡,这样的一路,人生似乎在此显...
    婆婆纳的婆言婆语阅读 191评论 0 0
  • SlidingMenu是一个开源的侧滑菜单(https://github.com/jfeinstein10/Sli...
    心中客阅读 4,769评论 0 2