ios开发 什么情况要用到数据库

ios开发 什么情况要用到数据库,第1张

第一,我不是高手,第二,我可以分享下我的心得。一般的数据量很小的项目,没必要使用数据库,如果只是保存写用户信息,大可以用其他的方法,用keychain或者nsuserdefault或者其他的都可以。任何一个项目都需要保存一个使用状态,不能每次打开项目的时候都和第一次运行一样,完全新,要给人以使用过的感觉就要存储一些历史数据。如果怕影响用户体验的话,可以多开线程在后台去对数据操作(数据量大的情况下),记得对线程要回收。如果你对保存数据比较迷茫的话,你可以google一下ios的四种数据持久化,对于sqlite和coredata,我个人认为只是两种不同的存储方法,一种是小型轻量级sqlite数据库,所有移动设备经常用到的,还有一种是苹果针对ios操作系统开发的coredata数据存储,具体孰胜孰略还有待你自己去了解,一般如果我的数据库要非常多的表格互相关联最后查询一条结果那么我会采用sqlite,如果存储一些有规律的数据那么我会采用coredata,没有哪个更好的说法,只能说这两种都各有千秋,而我听前辈们说,coredata只是苹果对sqlite的又一次封装而已,方便操作但也局限操作

本帖最后由 pig2 于 2014-3-11 18:45 编辑

1swift 是什么?

OpenStackObject Storage (Swift) 是开源的,用来创建可扩展的、冗余的、对象存储(引擎)。 swift使用标准化的服务器存储 PB 级可用数据。但它并不是文件系统 (file system) ,实时的数据存储系统(real-timedata storage system) 。 swift 看起来更像是一个长期的存储系统 (long term storage system) ,为了获得、调用、更新一些静态的永久性的数据。比如说,适合存储一些类型的数据:虚拟机镜像,存储,邮件存储,文档的备份。没有“单点”或者主控结点 (master point of control) , swift看起来具有更强的扩展性、冗余和持久性。

2swift 能做什么

长于存储非结构化数据,大、小文件性能据说都很好(目前没有测试数据, adrian otto 说测试过10 亿个 1byte 数据)。

简单来说swift是开发苹果iOS的最快捷的计算机语言。

但是实际上swift已经可以进行一次性编译之后,同时实现在苹果iOS和安卓系统上的部署。能够实现这个功能的目前唯一的IDE是SCADE,一个德国的软件产品(目前处于试用状态)。

而且从2015年起,swift不但支持在手机前端的开发,还支持开发服务器后端的程序,比如使用PerfectlySoft出品的Perfect 20就可以确保swift在Linux Ubuntu 1604上运行并实现一个Web服务器,访问各种数据库并调用远程访问。实际上Perfect 20是市面上最快的HTTP服务器,比php和java服务器都快得多。

3swift 不能做什么

Objects must be <5GB : swift 12 之后已经对 object 的大小不做限制

Not a Filesystem :不是文件系统。 swift 使用 REST API ,而不是使用传统意义上的文件操作命令, open(), read(), write(), seek(), 和 close() 等。

No File Locking :干脆不支持“文件锁”。其实在 swift 中,“锁”的概念是没有必要的。

No Directory Hierarchies :没有文件目录结构。 swift 可以模拟目录结构,但没有必要

Not a Database :不是数据库。 swift 使用 account-container-object 的概念存储 object ,可以列表出指定 container 中的 object ,不支持 server 端的查询和处理操作。

一、准备

一台安装了OS X操作系统的电脑(笔记本或一体机)

电脑上安装了Xcode

能连接到互联网——我们需要从网络上下载一些资源

了解基本的PHP代码基础和Mysql执行语句

二、基本步骤

配置PHP Apache环境

下载并安装MySql

下载并使用phpMyAdmin

三、详细操作

1配置PHP Apache环境

Mac OS上自带PHP Apache环境,所以不需要另外下载安装包,只需要简单配置一下即可。

(1)由于Apache目录是隐藏目录,如果系统目前不显示隐藏文件和文件夹,我们可以通过在Finder窗口下使用Command+Shift+G组合快捷键,或者在Finder状态下点击顶部状态栏的“前往——>前往文件夹”,在打开的对话框中输入

/etc/apache2

进入apache2目录,然后使用文本编辑器打开名为“httpdconf”的文件,如图1所示。

图1

(2)“httpdconf”的文件中查询到如下代码:

#LoadModule php5_module libexec/apache2/libphp5so

将该代码前面的#号删除,从而在Apache中启用PHP5模块。然后保存文件。

在保存文件时,如果提示没有修改该文件的系统权限时,右键点击该文件,选择“显示简介”,然后点击最右下角的小锁图标,将Privilege修改为Read&Write即可。同时我们还需要修改apache2这个文件夹的权限。

(3)接下来,打开“系统偏好设置”,选择“共享”选项卡,在打开的对话框中确保“互联网共享”未处于勾选状态(笔者的系统是10123版本),如图2所示。

图2

(4)最后,在终端输入如下指令重启apache:

sudo apachectl restart

此时,在浏览器输入

http://localhost/

并回车,如果出现如图3所示的结果,说明PHP环境配置成功。

图3

2下载并安装MySql

(1)进入MySQL官网下载页面,在“Select Operating System:”下拉列表中选择Mac OS X之后,在给出的下载列表中选择DMG格式的文件进行下载。

(2)下载完成后打开,可以看到如图4所示的文件。先点击安装文件"mysql-5718-macos1012-x86_64dmg"。

图4

(3)安装完成后,MySQL会给出一个默认密码,保存一下这个密码,下面会用到。选择“系统偏好设置”,搜索到“MySQL”,点击打开,然后开启MsSQL,并勾选“开机自启动”选项,如图5所示。

图5

(4)打开终端,输入如下指令:

mysql -version

若提示“-bash: mysql: command not found”,就需要先配置mysql bin目录的环境变量。

首先,在Finder状态下,点击屏幕上方导航栏“前往——>前往文件夹”,在弹出来的对话框中输入“/etc/bashrc”,点击确定。

然后,使用文本编辑打开“bashrc”文件(仍然别忘了修改这个文件的读写权限),在末尾加入如下代码:

#mysqlalias mysql='/usr/local/mysql/bin/mysql'alias mysqladmin='/usr/local/mysql/bin/mysqladmin'

然后,我们要修改MySQL给出的默认密码。打开终端,输入如下指令并回车:

mysqladmin -u root -p password

然后终端提示“Enter password:”在此输入刚才安装完MySQL之后分配的默认密码,然后回车,提示“New password:”,在此输入新的密码并回车,在“Confirm new password: ”后再次输入新密码并回车,则密码就重置完成了。

(5)如果使用终端来进行MySQL操作,无疑是一件很痛苦的事情。所以一般我们使用phpMyAdmin来进行数据库的操作。前往phpAdmin下载页面根据自己的需要下载phpAdmin(我下载的是phpMyAdmin-470-all-languageszip)。下载完成后,解压缩,并将解压缩之后的文件夹改名为phpMyadmin。然后将该文件夹复制到“/Library/WebServer/Documents/”目录下。

(6)进入phpMyadmin文件夹,复制一个名为“configsampleincphp”的文件,粘贴到当前目录下,并改名为“configincphp”。

(7)使用文本编辑器打开“configincphp”,将

$cfg['Servers'][$i]['host'] = 'localhost';

修改为:

$cfg['Servers'][$i]['host'] = '127001';

保存后,在浏览器输入

http://localhost/phpmyadmin/

  进入phpAdmin登入界面,用户名输入为root,密码为在第(4)步设置的新密码。进入后能正常使用phpAdmin来操作MySQL。

作者:三创iOS和PHP开发

链接:https://wwwjianshucom/p/c3f53ed7e184

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

点击登录之后,验证成功就会跳到好友页面。这个时候需要显示你已经有的好友。

那么在tableViewCell中显示好友姓名,需要数据源,数据源从服务器获看你是否有好友,检索到你的好友后把他显示在列表上。

xmpp中管理好友的类是 XMPPRoster,并且使用coredata来储存好友,达到数据持久化的效果。

那么我们可以将获取储存好友的仓库和xmppRoster对象的初始化封装在XMPPManager中。

在h文件中声明:

//好友管理

@property(nonatomic,strong)XMPPRoster xmppRoster;

遵循代理:

@interface XMPPManager : NSObject<XMPPStreamDelegate,XMPPRosterDelegate>

在 m文件中重写init方法中:

//2好友管理//获得一个存储好友的CoreData仓库,用来数据持久化 XMPPRosterCoreDataStorage rosterCoreDataStorage = [XMPPRosterCoreDataStorage sharedInstance];//初始化xmppRoster selfxmppRoster = [[XMPPRoster alloc]initWithRosterStorage:rosterCoreDataStorage dispatchQueue:dispatch_get_main_queue()];//激活 [selfxmppRoster activate:selfxmppStream];//设置代理 [selfxmppRoster addDelegate:self delegateQueue:dispatch_get_main_queue()];

接收好友请求。

将接收到好友请求的方法也封装在XMPPManager中:

// 收到好友请求执行的方法-(void)xmppRoster:(XMPPRoster )sender didReceivePresenceSubscriptionRequest:(XMPPPresence )presence{ selffromJid = presencefrom; UIAlertView alert = [[UIAlertView alloc]initWithTitle:@"提示:有人添加你" message:presencefromuser delegate:self cancelButtonTitle:@"拒绝" otherButtonTitles:@"OK", nil]; [alert show];}

-(void)alertView:(UIAlertView )alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ switch (buttonIndex) { case 0: [selfxmppRoster rejectPresenceSubscriptionRequestFrom:selffromJid]; break; case 1: [selfxmppRoster acceptPresenceSubscriptionRequestFrom:selffromJid andAddToRoster:YES]; break; default: break; }}

添加好友,添加的好友必须是服务器上存在的用户,需要看对方是否同意。对方同意之后,刷新好友列表,显示出来,同时在服务器上也要添加,这里服务器上用的是coredata来存储个人的好友信息。

好友页面实现文件,遵循代理,数据源数组

在viewDidLoad中完成初始化数组,设置代理和添加好友按钮

这里简化了添加好友,写死了只能添加“张三”,如果需要添加更多,可以写成借口

接下来是tableview数据源代理方法

tableview

这时候数组明显是没有jid对象的。获取jid对象是在XMPPPRoster代理方法中实现的:

pragma mark xmppRoster 的代理方法

pragma mark 开始检索好友列表的方法-(void)xmppRosterDidBeginPopulating:(XMPPRoster )sender{ NSLog(@"开始检索好友列表");}

pragma mark 正在检索好友列表的方法-(void)xmppRoster:(XMPPRoster )sender didRecieveRosterItem:(DDXMLElement )item{ NSLog(@"每一个好友都会走一次这个方法");//获得item的属性里的jid字符串,再通过它获得jid对象 NSString jidStr = [[item attributeForName:@"jid"] stringValue]; XMPPJID jid = [XMPPJID jidWithString:jidStr];//是否已经添加 if ([selfrosterJids containsObject:jid]) { return; }//将好友添加到数组中去 [selfrosterJids addObject:jid];//添加完数据要更新UI(表视图更新) NSIndexPath indexPath = [NSIndexPath indexPathForRow:selfrosterJidscount-1 inSection:0]; [selftableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];}

pragma mark 好友列表检索完毕的方法-(void)xmppRosterDidEndPopulating:(XMPPRoster )sender{ NSLog(@"好友列表检索完毕");}

4 删除好友。列表删除,数组删除,服务器删除。

pragma mark 删除好友执行的方法-(void)tableView:(UITableView )tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath )indexPath{ if (editingStyle==UITableViewCellEditingStyleDelete) { //找到要删除的人 XMPPJID jid = selfrosterJids[indexPathrow];//从数组中删除 [selfrosterJids removeObjectAtIndex:indexPathrow];//从Ui单元格删除 [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic ];//从服务器删除 [[XMPPManager defaultManager]xmppRoster removeUser:jid]; }}

5进入聊天页面

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » ios开发 什么情况要用到数据库

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情