iosorm
Core Data 简介
• Core Data 是 iOS SDK 里的一个很强大的框架,允许程序员 以面向对象 的方式储存和回管理数据 。使用 Core Data 框架,程序员可以很轻松有效答 地通过面向对象的接口管理数据
• Core Data 框架提供了 对象 - 关系映射 (ORM) 的功能,即能够将 OC 对象转 化成数据,保存在 SQLite3 数据库文件中,也能够将保存在数据库中的 数据还原成 OC 对象
• 在数据操作过程中,无需编写任何 SQL 语句
• 要使用 Core Data , 需要导入 CoreData 框架
❷ swift,ios网络编程 怎么做到类似c#简单的查询数据与更新数据
首先,如果您只希望用swift,并且不得不使用中间层的web service api,那么可以通过Swift 实现服务器端的开发,比如 perfect.org 软件框架体系,而且文档有中文版。
换一个角度考虑问题。从理论上您的ios程序是可以直接与互联网sql 服务器进行操作的,不需要中间层。比如如果在亚马逊aws上安装一个mysql的实例,并且开放防火墙3306端口、然后设置用户可以从外网访问(用grant命令),那么从手机上登录数据库服务器不是不可能。
好像微软的Azure以及网络云都是可以直接建云端数据库的,网络云我知道是支持MySQL和微软SQL Server,微软Azure至少支持SQL Server。
不过最好在联网到云端之前在本地用虚拟机做足够的测试,靠清楚数据库服务器如何打开端口、配置网络用户进行访问,这种方式不推荐,因为安全性会降低很多,虽然编程简单了。
回到第一个推荐项,如果用 Perfect ,需要在服务器端安装数据库,然后编写Swift 程序作为互联网中间层,接收客户端的身份认证,然后访问数据库,将数据库信息以json方式返回给客户。
Perfect 的典型例子是 Perfect Turnstile PostgreSQL,包含了一个web服务器提供api服务、自带oauth身份验证功能,以及连接到数据库的ORM(就是数据库关系对象管理),因此从理论上,开发一个这样的服务器甚至不需要学习sql语句——通过swift 的类对象就能自动根据数据表对数据记录进行增、删、改,非常方便,这也是云计算的一种标准。为什么?中间层有中间层的好处,能够负载均衡、屏蔽安全风险——即使黑客获取了数据库密码,也因为中间层的缘故,无法从远程访问数据库
❸ ios有什么好的开源本地数据库orm
下面是5个可用ORM的总体介绍:
1. OrmLite
OrmLite 不是 Android 平台专用的ORM框架,它是Java ORM。支持JDBC连接,Spring以及Android平台。语法中广泛使用了注解(Annotation)。
2. SugarORM
SugarORM 是 Android 平台专用ORM。提供简单易学的APIs。可以很容易的处理1对1和1对多的关系型数据,并通过3个函数save(), delete() 和 find() (或者 findById()) 来简化CRUD基本操作。
要启用SugarORM,需要在你的应用程序 AndroidManifest.xml 配置中添加如下meta-data标签:
<meta-data android:name="DATABASE" android:value="my_database.db" />
<meta-data android:name="VERSION" android:value="1" />
<meta-data android:name="QUERY_LOG" android:value="true" />
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.my-domain" />
然后就可以从SugarORM扩展需要保存的数据类:
public class User extends SugarRecord<User> {
String username;
String password;
int age;
@Ignore
String bio; //this will be ignored by SugarORM
public User() { }
public User(String username, String password,int age){
this.username = username;
this.password = password;
this.age = age;
}
}
要添加一个User,代码如下:
User johndoe = new User(getContext(),"john.doe","secret",19);
johndoe.save(); //stores the new user into the database
3. GreenDAO
当性能很重要时(数据访问频繁),GreenDao是一个很快的解决方案,它能够支持数千条记录的CRUD每秒,和OrmLite相比,GreenDAO要快几乎4.5倍。(准确数据请自行benchmark)。
GreenDAO小于100KB,所以对于应用程序APK的大小影响很小。
这里有一个教程,演示如何使用Android Studio,在Android应用程序中使用GreenDAO框架。
4. Active Android
Active Record(活动目录)是Yii、Rails等框架中对ORM实现的典型命名方式。Active Android 帮助你以面向对象的方式来操作SQLite。
5. Realm
Realm 是一个将可以使用的Android ORM,基于C++编写,直接运行在你的设备硬件上(不需要被解释),因此运行很快。它同时是开源跨平台的,iOS的代码可以在GitHub找到,你还可以找到Objective C以及Swift编写的Realm使用实例。
❹ android app开发中常用到哪些开源框架
1.Framework 7
来自iDangero.us —自版本1.0在一年前发布以来,Framework就一直是开发iOS应用程序的最佳选择之一。由于它提供对安卓的支持,如果你先从iOS入手,但随后构建具有类似iOS外观感觉的安卓版本,它也是个不错的选择。功能特性包括:Material Design用户界面、原生滚动、1:1页面动画、自定义DOM库以及XHR缓存和预装入。
3.jQuery Mobile
来自jQuery基金会— 这种成熟的轻量级框架基于jQuery,缺少本文中介绍的大多数程序包具有的许多高级功能,不过它仍拥有一群庞大的忠实用户。虽然它提供了语义标记、渐进式改进、主题化设计和PhoneGap/Cordova支持之类的功能,但是在类似原生系统的功能和性能或者高级用户界面方面乏善可陈。另一方面,它又很简单,这意味着“编写一次,到处运行”是常常可以实现的目标;对于还需要在Windows Phone和黑莓上运行的简单应用程序而言,它也是个不错的选择。
2.Ionic
来自Ionic — 这种流行的跨平台框架基于Sass CSS扩展语言,使用起来相当容易,不过它还能集成用于构建更高级应用程序的AngularJS。Ionic提供了一个丰富的库,包括针对移动设备优化的HTML、CSS和JS CSS组件、手势及工具,可与预定义的组件协同工作。命令行接口提供了仿真器、实时重装和日志等功能。还有一个基于Cordova的应用程序包装器。
4.Kendo UI
来自Telerik — 这种基于jQuery的HTML5/Java框架既有开源版,又有商业版。对企业用户友好的Kendo UI提供了种类丰富的用户界面窗口组件和插件。它最广为人知的地方就是拥有无数具有Material Design风格的预构建主题,另外还有一个主题构建器,可用于构建自定义主题。其他功能特性包括:Angular和Bootstrap UI集成以及性能优化。
6.Native
来自Telerik —顾名思义,Native专注于原生用户体验开发,但是它提供了跨安卓和iOS的跨平台代码共享支持。该软件使用现有的原生用户界面库,用户界面由Java、XML或视情况而定的Angular来描述。然而,使用起来,它不如Telerik更传统的跨平台Kendo UI框架来得容易。
5.Mobile Angular UI
来自Maurizio Casimirri —这个开源项目将AngularJS和经过修改的推特Bootstrap合并到了一个移动用户界面框架。据说它保留了Bootstrap 3的大部分语法,因而更容易实现从Web应用程序向移动应用程序的移植,同时增添了Bootstrap缺失的许多组件,比如切开关、覆盖、侧边栏、可滚动区域以及固定位置的导航条。库包括fastclick.js和overthrow.js。
7.Onsen UI
来自Asial Corp. — Onsen基于HTML和CSS而建,旨在与并非预先集成的PhoneGap和Cordova协同运行。它还可以与Angular和jQuery协同运行。顾名思义,该程序强调用户界面开发,并提供了一系列广泛的基于Web的用户界面组件和特性,比如表格的双列视图。(然而,仍然缺少Material Design。)这个文档完备的程序针对这样的jQuery Mobile用户:既需要易于使用,又想要更多的功能、更高的性能和更丰富的用户界面特性。总部位于东京的Asial正在开发一种拖放式GUI工具,该公司还开发和维护Monaca。
9.Sencha Touch
来自Sencha — Sencha的成熟的、面向企业的HTML5/Java框架既有开源版,又有商业版。Sencha建立于ExtJS的基础上,能够获得类似原生的性能。它为HTML5提供了可视化应用程序构建器,另外还提供了重复使用自定义组件的功能。原生包装器简化了分发到Google Play等应用程序商店的工作。
8.React Native
来自Facebook — React Native是一种开源框架,从Facebook的React Java框架派生而来,众所周知,Java框架取代了早些时候的HTML5基础。顾名思义,这个面向iOS的高端程序与其说是一种跨平台框架,还不如说是原生程序包装器,但是由于新增了对安卓的支持,它很适合我们的要求,因为你实际上只要用Java编写一次代码,就能移植到这两个平台。目前,只有OS X桌面得到全面支持,不过也有试验性的Linux和Windows版本面向安卓开发。
10.Titanium
来自Appcelerator —不像那些比较偏向Web的框架,Titanium使用Java来构建原生代码,声称有望提升性能。这种基于Node.js的软件开发工具包(SDK)为iOS、安卓、Windows、黑莓和HTML5提供了5000多个API。Titanium更广为人知的地方是性能和丰富的功能特性,而不是易用性。软件是开源,不过只要你不发布你的应用程序,功能齐全的免费版可以免费享用,眼下你每月至少得支付39美元。
❺ 同时开发 Android 和 iOS apps 是一种什么样的体验
两种模拟器
一个天堂,一个地狱。
一:开发环境
iOS的Xcode是垃圾中的垃圾,尤其是现在对Swift的支持,我之前用的时候隔三差五的代码高亮崩溃了,Xcode的崩溃次数绝对是Android IDE的数倍起,而且真心卡,我感觉上下拖动都没60帧。
Android以前的Eclipse也是垃圾,后来出的Intelijia/Android Studio好太多。代码多了也卡,所以我干脆直接指定给他3G内存用(我电脑是16G的13寸rmbp),会好很多。不过自从Android全面切到Gralde后,感觉Gradle编译真心慢,尤其是多mole依赖的时候,还有方法数超过6k5需要multidex的时候简直是噩梦,因为开了multidex后是不支持增量编译。这方面iOS好很多,iOS用的多的是管理依赖,改几行代码编译速度确实比Gradle快。
然iOS可以用AppCode,但是这玩意老是跟不上Xcode的发版速度,比如iOS9出了,Xcode7出了,但是老得AppCode就没法写了,各种语法错误,得上新的开发版,但是开发版对于iOS新特性的支持肯定又不全
二:开发语言
iOS的OC语法怪异繁琐但是习惯就好,这玩意调用C/C++比Android用的Java好太多。后来的Swift改进太多,但是当前不成熟,主要是Xcode太垃圾,不过现在用Swift写的iOS App也渐渐多起来。Android的Java已死,死在1.7,是不可能上1.8的Lambda,虽然有第三方库搞这个。Jetbrain出的Kotlin对Android的支持也才开始,自己都没1.0,想用Kotlin写Android至少也得等个2,3年把。
三:页面导航和保存现场
iOS是用ViewController,Android用Activity,VC的push==Android的startActivity,VC的present==DialogFragment.show
无论哪个系统都有内存不够的问题,在应用被切到后台,Android原生支持序列化保存现场,以便之后App被回收后再回来能恢复(当然你可以不做,比如某个版本的网络地图就是这么干的,每次切出去进来就重载),Fragment做的那么复杂也有这部分原因,iOS默认不支持,需要开发者自己写很繁琐的代码,所以你可以见到,基本上没有iOS应用在后台被销毁后重进还能恢复现场,一般都是重载页面复杂点的iOS App都要用到 ViewController互相内嵌,叫 ViewController Container,在Android上面就是Activity内嵌Fragment内嵌Child Fragment。
VC之间传数据因为没有保存现场的需求,所以直接给VC对象的某个属性赋值就OK。Androd就得经过Intent,要求数据必须支持序列化,当然你要是不愿意保存现场,跟iOS差不多也行。其实我也不知道哪个算比较好,因为iOS也有人抱怨iOS的做法让2个VC耦合太强。
四:App内存
iOS App启动后有差不多1/2整个系统内存的可用大小,但是Android的差距就很大,从32mb到195mb+(2G总内存)都有,跟整个手机的总内存有关,没用过3G,4G内存的Android手机,不知道heap size是多少。这就导致Android的内存更容易出问题。反正都有代码没写好因为强引用导致内存泄露的问题
五:UI,兼容性适配
iOS从最早的手动Frame,为了适配ip4 ip5的auto resizing,后来的AutoLayout,后来的Size Class。但是StoryBoard的AutoLayout真的非常非常难用,稍微复杂点的界面,左侧一堆一堆的约束,根本不可能改的了的,对比起,容我现在先吐一下,我眼睛痛。所以很多人用第三方的代码AutoLayout库,比如Masonry,但是我用下来感觉还是啰嗦。iOS9为了搞适配,增加了UIStackView,这其实就是Android的LinearLayout。AutoLayout另外一个问题是卡,所以基本没人会在UITableView的Cell里面用AutoLayout,全是手动Frame布局的。
iOS开发一直以来很多争吵,代码画布局(要么手动Frame,要么各种第三方布局库),还是全部StoryBoard/Xib,这2个都恶心,代码画,VC里面又是布局又是业务,后者又不是人能用的,StobyBoard/Xib的根本没有可读性可言,对于版本管理就是灾难。而且我个人对于Xcode能否打开复杂StoryBoard切保持不崩溃持有怀疑态度。
Android通常是XML画布局,代码做业务,相对来说好太多,XML非常好读写,写个ListView的Cell的速度比UITableView快太多,iOS是需要你自己计算高度的,当然你可以不用,我上面也说了,你不怕卡的话。但是Android兼容麻烦的是Rom兼容,尤其是国内厂商,对于Framework层改动太多,很容易踩到坑。
对于系统Api以及系统版本更新的坑,我印象里面,无论是iOS还是Android都不会少,逃不掉的,老老实实认命找workaround。
六:多线程
iOS的GCD NSOperation对Java的Executor多线程框架。就客户端开发而言,我没感觉出来这2者有什么麻烦或者为难的地方,都能满足需要,当然或许是我太浅薄。
七:存储
虽然iOS有CoreData,但是没人用啊,大家都喜欢SQLite,Androd官方是没ORM方案的,老老实实SQLite,第三方的ORM反正我心虚iOS分配给App的几个文件夹,如果你在不该写的文件夹写,比如一个会被iCloud备份的文件夹下当缓存用我记得是会被AppStore驳回的。但是Android随便了,整个SD卡可以读写,某个版本的Android是禁止写第二个存储空间的(多数都是SD卡),后来我记得又改回去了。
八:动画
iOS的RunLoop在Android那边就是Handler/Looper/MessageQueue。iOS的RunLoop多个模式,可以在滚动的时候禁止其他的UI消息,很像Android上就是MessageQueue.IdleHandler因为iOS要跟OS X共享代码,所以是拆分显示和事件处理(手机触摸屏,电脑就是鼠标键盘),也就有了CALayer和UIView,Android因为没历史包袱,都是View自己处理的。iOS动画可以直接操作CALayer做,Android一般是用Animator操作View,但是因为版本兼容性的问题,很多人还是会用2.x的Aniamtion来做Android动画,那东西渣多了。Animator的一个好处是可以任意属性对于时间的变化,Facebook给iOS出的Pop我记得也是可以这样,不然你就得自己用
CADisplayLink封装了。
动画过程中的快慢iOS上是TimingFunction负责,Android是Interpolator贝塞尔曲线 UIBezierPath 对应 Path
ViewController过场动画UIViewControllerTransitioning对应Android5的ActivityTransition,但是因为普遍Android手机版本跟不上。。。。很少有人用ActivityTransition。Androd没有iOS的UIKit Dynamics库,有些特效就得自己写
九:上架
我就以国内情况为例,你如果有个新App,上架AppStore需要一个月你得做好准备,Apple大爷是一周审核一次你的App,有一项通不过你再等一周吧,审核不过会给你截图和解释,你改吧,然后下周又有新问题,所以大约一个月,来来回去4次。
国内没Google Play,所以你要么去小米商店,豌豆荚,应用宝,也得审核3,4天,比Apple要容易不少,但是渠道多,烦,一般还需要改Gradle脚本打包出不同渠道的包来判定对应的应用市场到底真的分发了多少来,都是跟钱有关。
十:感觉写iOS是被Apple操,写Android是被各手机厂商操
❻ ios开发中数据持久化有哪几种,分别什么时间使用
1、plist文件(属性列表),通常用于储存用户设置,也可以用于存储捆绑的版信息;
2、preference(偏好设置),权常用于保存少量数据;
3、NSKeyedArchiver(归档),将内存中的对象实例保存成binary到磁盘并且可以逆向这个过程用来保存用户操作状态等;
4、SQLite 3,使用数据库进行存储;
5、CoreData,它提供了对象-关系映射(ORM)的功能,即能够将OC对象转化成数据,保存在SQLite数据库文件中,也能够将保存在数据库中的数据还原成OC对象。