1. ios coredata怎么创建多张表
1)先创建需要的实体表(方法见"CoreData单表创建使用")
Course, Section, Teacher 表
2)建立关联 设置删除关系,对应关系如下(设置的具体含义已在文章第二部分介绍)
课程_教师 (一课程可包含多个教师,删除关系:作废)
课程_章节(一节课可包含多个章节,删除关系:级联)
章节_课程(一个章节只属于一个课程,删除关系:作废)
教师_课程(一个教师可以讲多门课,删除关系:作废)
创瞎做建之后查看style关系:
表关系
3)使用创建的对象生成相应地文件:.h和.m(方法见"CoreData单表创建使用")
根据3个对象创建的文件
根据设置的对象之间的对应关系 会生成相应地属性和方法Section对应一个课程团指时 添加课程对象的属性
课程对应的章节以及教师都是多个,生成NSSet 存储 并生成相应方法
NSSet 是一个无序的集合 ,可以使用NSSet 与NSArray根塌神配据需要转换使用,其他使用方法 同单表使用的增删查改,只是访问时多层访问.
如:NSPredicate*predict = [NSPredicate predicateWithFormat:@"section_course.courseId = %d",courseId];
如:self.courseEntity.course_teacher.count
coreData多表关联的基本操作已做一个简单的介绍,具体的功能还待使用者发掘,并且苹果提供了NSFetchController 与coreData结合使用.
2. ios app用什么数据库
iOS app一般来常用的数据库有sqlite和coredata。
sqlite使用源的是SQL语句,代码会比较复杂,一般不是特别大得数据可以用sqlite来写。
苹果的建议是使用coredata,但是coredata在逻辑上会复杂一些,如果能把握住coredata的逻辑关系,那会大大的提高工作效率。
一般建议使用第三方库来写
3. 升级了新的mac新版本,xcode的coredata文件报错是为什么
预加载/引入数据
那么我们究竟怎样把数据存储进Core Data数据库?目前有两种比较好的选择。
在App启动的时候从外部文件引入数据,就是在程序开始运行的时候从外部的资源,比如SQLite数据库或者XML文件中,引入数据。
提供一个已经制作完成的SQLite数据库,首先制作一个像上次的教程说的那样的数据库模型,之后在这个模型中填充数据,填充数据的方式是使用一个utility app,这个utility app可以是一个使用Core Data API填充数据库的Mac或者iOS app,也可以是一些直接填充数据库的程序。一旦数据库被填充之后,你就可以在没有已存在的数据库的情况下设置这个数据库未使用的默认数据库。
在这个教程中,我们会通过第二种,为大家展示如何使用一个简单的utility app来预加载一个已经装在好的Core Data数据库,以便让你的app使用。
第一步
我们在iOS上使用Core Data的方法的基础和我们在Mac OS X上使用的是一致的,使用同样的模型和类。
这一为我们可以写一个MAC OS X上的简单的console程序,来从数据源引入数据,再把这个数据库的数据库拿来给我们的iOS程序来用,不错吧?
我们来试试,首先打开Xcode,在 Mac OSX类中的Application中使用Command Line Tool 的模板。
我们就用 “CoreDataTutorial2” 作为工程的名字吧,记得使用“Core Data” 和 “Use Automatic Reference Counting” 。
完成创建之后,选择 “CoreDataTutorial2.xcdatamodeld” 彻底删除之。
4. iOS 开发如果涉及数据和表的持久化,Core Data 比 SQLite 更好吗
这两个东西我都用过,两者都能实现对数据库的操作,功能上需求都能满足。
先前在公司实习的时候,原先项目中用的是SQLite,感觉操作很直接。如果先前有一点数据库和SQL基础的话,写起来会感觉很亲切,都是一些数据库操作的语句。但是当操作变多之后,语句越来越多,就很烦,代码比较多,看起来也会混乱一些。
后来新项目中尝试了CoreData,因为苹果一直在推这个东西。CoreData用起来比直接sql语句方便许多,而且很适合进行代码封装、重构。其实后来在用CoreData的时候,参照RestKit的ObjectMapping和CoreData部分对其进行了少量封装,使得CoreData用起来非常方便。例如:添加一条User数据
User *user = [User object];
user.name = @"example";
[objectStore save];
后来做开发一直都在用CoreData,主要是我觉得用起来太方便了,代码能够精简许多。另外,
App升级之后数据库字段或者表有更改会导致crash,CoreData的版本管理和数据迁移变得非常有用,手动写sql语句操作还是麻烦一些。
CoreData不光能操纵SQLite,CoreData和iCloud的结合也很好,如果有这方面需求的话优先考虑CoreData。
CoreData并不是直接操纵数据库,比如:使用CoreData时不能设置数据库的主键,目前仍需要手动操作。
效率上其实跑程序时感觉不出来,毕竟手机上的数据不能跟网站的数据和访问量相提并论。
总的来说,个人比较喜欢用CoreData,因为自己比较熟悉,使用起来也非常方便。
PS:既然你一直在CoreData,就应该坚持用下去,除非是真的碰到很致命的无法解决问题。中途换掉既有的自己熟悉的东西,费时费力,实际用起来没区别,得不偿失。
转载
5. 手机app用什么数据库比较好
理论上,APP可以使用任何类型的数据库,不过目前用得较多的是MSSQL和MYSQL。一般开发APP用JAVA的比较多版,可以考虑使权用MYSQL。sqlite是一种小型数据,可以作为本地保存数据库,如果数据量比较大,交互比较频繁,不建议使用。