Create an Embedded Framework in Xcode with Swift
转自:http://zappdesigntemplates.com/create-an-embedded-framework-in-xcode-with-swift/
- 1.Create an Embedded Framework in Xcode with Swift
- 2.How to make a Today Extension in Swift for a Weather app
We first heard this expression at WWDC last year in 2014, Embedded Framework. A frameworkor a library is usually a bunch of classes and objects put together into one big block to be able to reuse it in different applications. The same thing is happening here. An Embedded Framework is the same thing, the only restricion it cannot contain images or other resources.
Of course you can just simply avoid using these frameworks and modify your classes’ target membership settings, and you don’t have to worry about this whole framework thing.

BUT, since we are awesome and clever developers, we want to make our code also amazing and intelligent, we should organize them into frameworks. You can even have multiple ones if you desire. One for networking and another one for the data models.
For our example, we are going to create one Embedded Framework for all of our classes that we want to access later in a Today Extension for example, or in our Watch app.
1. Add a new Target for our Embedded Framework
As every time, we need to create a new target. To do this, go to File->New->Target…

There you need to select Framework&Library and Cocoa Touch Framework.

Give it a name, we’ll name it SabWeatherDataKit and select a language and you are good to go.

Xcode will create 2 new folders/groups for you, one that contains your framework files and the test target’s files and details.

2. Setting up our framework
Now that we created this framework, we need to use it in our app somehow. In this example, we are going to move all the classes that should be or could be used in other targets such as a Today Extension. For clarity, just simply select your classes, and drag them into the SabWeatherDataKit folder. That’s it. But we are not done yet. If you select one of those classes, and open the Utilities window (right sidepanel) it will show in the Target Membership window, that it still belongs to the app not to the framework, and that’s bad.
So with the file(s) still selected, uncheck the app, and check the checkmark for your framework.

Now what Xcode does, it adds those classes to your framework and remove it from your project.
And if you build now, Xcode will cry a lot, and you’ll break your monitor trying to figure out those errors and warnings. But calm down everything is fine.
What simply happened, is that Xcode doesn’t know where those files/classes are right now, so we need to make sure to import our Framework, and all of our classes and methods are set to public (obviously the ones that we want to reach . I mean the ones, that should be visible to other classes, objects.
Wherever, you want to use any of your classes that are in the Embedded Framework now, you need to import your framework, like so:
import SabWeatherDataKit
3. Setting up your framework and project to work together as a team
Next up you need to define which classes and functions you want to make visible to other classes, targets. For example you might want to allow a login method to be called in your app, but the url constructing method that gives the proper url for the login request not.
In Swift it is simple, you just put the ‘public’ key in front of your method, class or property (in your framework’s classes) and boom, they are visible to your app.

In our example, the WeatherParser doesn’t need to be a public class, nor needs to convert its methods to public, cause it will be only used inside the framework.
4. Name your framework classes right
I know this example doesn’t fit the title of this section, but think about this for a sec. Isn’t it easier for you or someone else to find out what your class is all about by just looking at it and read the filename? So instead of LocationHandler we could use WeatherKitLocationHandler and you immediately know that this class belongs to a framework. Just as other third party frameworks are doing this: Parse, AFNetworking, etc (those are not embedded frameworks, but why can’t you do it that way?).
5. Move all the classes that can be reused into your framework
Everything that can be reused in your app, your watchapp or extension, should be moved to a framework. It is not only easier for you to manage your code, but you can make pretty great things like using a Fascade pattern to create an object that can be used to generate different types for your views.
For example in our project, we could just have a method from the framework:
downloadWeatherDataForCurrentLocation(completionBlock: (succeeded: bool, weatherArray: [Weather]) -> ())
So you don’t need to initialise a locationManager object or care about all that, you just call one method and boom, you got the weather information for your current location.
Embedded Framework is an awesome tool to group your classes, objects and create a better iOS app. Combine it with a Today extension is pretty cool. But that is for the next tutorial, coming soon.
Until that, go ahead and download the free project and play around with it. If you have any questions or concerns, use the comment section below.
Create an Embedded Framework in Xcode with Swift的更多相关文章
- Chromium Embedded Framework 中文文档(简介)
转自:http://www.cnblogs.com/think/archive/2011/10/06/CEF-Introduce.html 简介 Chromium Embedded Framework ...
- Chromium Embedded Framework
关于CEF 近期由于工作需要开始研究了Google的Chromium Embedded Framework(CEF),这是一个基于Google Chromium开源代码的项目,使用CEF可以很方便的在 ...
- SDK 开发 .a .framework .bundle (xcode引用) 依赖sdk工程
一. 静态库.a 1.创建静态库工程 Cocoa Touch Static Libray ,然后可以创建一个测试视图 TestView 2.暴露头文件 -> Build Phases--> ...
- XCode下Swift – WebView IOS demo
简介 我今天用Mac升级了XCode到8.1,Swift版本应该到了swift3,按网上的demo写webview的例子,报一堆错,整了一天才搞定,不想其他人踩坑了! XCode8.1 ,swift3 ...
- 在xcode中用 swift 进行网络服务请求
xcode集成开发环境是运行于Mac苹果电脑上用于开发swift应用程序的工具,利用xcode可以很方便.直观的开发OS X和iOS系统所支持的应用程序. 1 开发环境: Mac OS 10.11 X ...
- How difficult is it to create a JavaScript framework?
分享来自 quora 的一篇文章 https://www.quora.com/How-difficult-is-it-to-create-a-JavaScript-framework https:// ...
- Xcode 8 Swift 类似插件方法
Xcode8 Swift使用技巧 1 option + cmd + / 可以弹出注释 2 color 然后加 enter 可以弹出颜色选择 3 #FIXME: 警告 4 #MARK: 备注 ...
- 分享你最喜欢的技巧和提示(Xcode,Objective-C,Swift,C...等等)
http://www.cocoachina.com/ios/20151231/14846.html 笔者分享总结如下(本篇会不定期进行更新) : Objective-C 1.让Xcode的控制台支持L ...
- 『干货』分享你最喜欢的技巧和提示(Xcode,objective-c,swift,c...等等)
亲爱的读者们,你们好 !年底将近,分享从过去一年你最喜欢的技巧和建议作为礼物送给新手们.提交你的最喜欢的迅速或objc琐事,实用的提示,意外的发现,实用的解决方法,没用的迷恋,或不论什么其它你认为今年 ...
随机推荐
- [转载]2.7 UiPath Flowchart的介绍和使用
一.Flowchart的介绍 用于更复杂的业务逻辑. 与序列不同的是, 流程图提供了多个分支逻辑运算符, 可以使用流程图创建复杂的业务流程并以多种方式连接每个活动. 二.在UiPath 使用Flowc ...
- 如何处理消息队列消费过程中的重复消息&如何实现幂等性
什么是幂等 幂等本来是数学上的概念,它的定义是这样的: 如果一个函数 f(x) 满足:f(f(x)) = f(x),则函数 f(x) 满足幂等性. 在计算机领域用来描述一个操作.方法或者服务.一个幂等 ...
- python基础-匿名函数和内置函数
匿名函数和内置函数 匿名函数:没有名字,使用一次即被收回,加括号就可以运行的函数. 语法:lambda 参数:返回值 使用方式: 将匿名函数赋值给变量,给匿名函数一个名字,使用这个变量来调用(还不如用 ...
- 第六天、用户、组、权限、grep
第六天.用户.组.权限.grep 权限总结表 操作 源目录权限 文件权限 目标目录权限 rm删文件 wx - - mv改名 wx - - mv移动文件 wx r wx cp复制文件 x r wx &g ...
- Hadoop压缩的图文教程
近期由于Hadoop集群机器硬盘资源紧张,有需求让把 Hadoop 集群上的历史数据进行下压缩,开始从网上查找的都是关于各种压缩机制的对比,很少有关于怎么压缩的教程(我没找到..),再此特记录下本次压 ...
- HTML 颜色输入框修改事件的触发,以及获取修改后的颜色
HTML 颜色输入框修改事件的触发,以及获取修改后的颜色 <!DOCTYPE html> <html lang="en"> <head> < ...
- Cesium小插件改造--clock和timeline
一.Clock 废话不多说,先上效果图再说.如效果图所示:clock的日期显示为YY/MM/DD这种简洁明了格式,时间则为当前系统时间(也就是北京时间).Clock内部以儒略日(JulianDate) ...
- 【dp】Arrange the Schedule
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3538 题意:如题. 题解: 假如 一组数据 ...(n1)A.. ...
- 自制反汇编工具使用实例 其二(使用xmm寄存器初始化对象,以及空的成员函数指针)
在反汇编代码中,当看到xmm寄存器,第一反应是将要进行浮点操作或访问,但是更加多的情况是在使用xmm寄存器初始化局部对象. 下面是自制反汇编工具翻译出来的代码: // -[CALayer setAll ...
- IE6下CSS常见兼容性问题及解决方案
1. 在IE6元素浮动,如果宽度需要内容撑开,就给里面的块元素加浮动. 2. IE6下最小高度问题:在IE6下元素高度小于19px的时候,会被当作19px处理.解决方案:给元素加 overflow:h ...