从头开始swift2.0 仿乐乐医项目(六)Bmob云集成

8 篇文章 0 订阅

最后的gif效果图
Untitled.gif
一款移动应用一旦需要后端服务的强大支撑时,开发商就必须考虑基础架构、服务集成、可伸缩性等繁冗复杂的问题。而在这些方面耗费的大量时间精力财力却不能直接提升App的用户体验。

为了解决这些问题,部分App发行商租用了譬如AWS(Amazon Web Services)的公有云服务,有的则部署内部专用的私有云服务。而移动开发团队越来越趋向于小规模化,架设需要高成本运营的服务器群或许并不是最好的方法,租用或免费使用后端云服务开始流行起来。

这里我们演示一下国内使用率最多的Bmob云来进行学习。
注册账号并创建应用的过程略过,如果你已经看到这里的话应该至少算是个程序员了,不可能不会的。然后我们在pod中添加bmob:
pod 'BmobSDK', '~> 1.6.5'
然后记得更新一下 pod update
接着我们将学习如何在Swift中调用Objective-C的SDK:

创建一个Objective-C 文件,new File > iOS > Source > Objective-C File,随便命名一个保存即可
QQ20151126-16.png

QQ20151126-17.png
然后创建,一定要选择Create Bridging Header

QQ20151126-19.png
完成后看到项目中多了两个文件

QQ20151126-20.png
删除刚刚创建的.m文件,并在自动生成的.h文件中添加BmobSDK的引用
#import <BmobSDK/Bmob.h>
保存后我们就可以在其它地方调用BmobSDK了,添加别的Objective-C第三方库也是一样的操作,生成Bridging-Header.h文件后在其中import即可。

然后我们开始使用Bmob来展示App数据。
首先在AppDelegate的didFinishLaunchingWithOptions中注册Bmob:
Bmob.registerWithAppKey("Application ID")
然后就可以调用Bmob的增删改查啦,MainViewController中测试一个创建表的操作:

//创建方法
func saveObj(){
        var obj:BmobObject = BmobObject(className: "GameScore")
        obj.setObject(3, forKey: "class")
        obj.saveInBackground()
}

我们调用一下这个方法并run一下,之后到Bmob后台查看,

QQ20151126-1.png
我调用了两次,已经成功的创建了一张名为GameScore的表,并且保存了两条数据了,说明我们操作是成功的。
然后我们直接在页面上新建一个DoctorUser的表,并添加三个医生的数据测试一下:
QQ20151126-2.png
接着我们更换tableView为真实数据
var list:NSMutableArray = NSMutableArray()
numberOfRowsInSection修改为list.count

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return list.count
    }

再修改之前的上下拉方法

    /**
     下拉刷新
     */
    func downPlullLoadData(){
        xwDelay(1) { () -> Void in //延迟一秒再查询
            let query:BmobQuery = BmobQuery(className:"DoctorUser")
            query.cachePolicy = kBmobCachePolicyNetworkElseCache // 优先使用Bmob本地缓存
            query.findObjectsInBackgroundWithBlock({array,error in
                self.list.removeAllObjects() //先将之前的数据清除
                for var obj in array {
                    self.list.addObject(obj) //再循环添加
                }
                self.tableView.reloadData()
                self.tableView.headerView?.endRefreshing() //刷新结束
                }
            )
        }
    }

    /**
     上拉加载更多
     */
    func upPullLoadData(){
        xwDelay(1) { () -> Void in
            let query:BmobQuery = BmobQuery(className:"DoctorUser")
            query.cachePolicy = kBmobCachePolicyNetworkElseCache
            query.findObjectsInBackgroundWithBlock({array,error in
                for var obj in array {
                    self.list.addObject(obj) //加载更多时直接添加数据
                }
                self.tableView.reloadData()
                self.tableView.footerView?.endRefreshing()
                }
            )
        }
    }

现在我们运行一下,可以看到数量查出来是正确的,上拉加载更多时因为我们仅仅只有3条测试数据,所以不用增加偏移量,始终从0开始查就可以了。
QQ20151126-3.png
现在我们来修改cellForRowAtIndexPath方法,类似android中的getView

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! DoctorCell

        let doctor = list[indexPath.row] as! BmobObject

        cell.lblName.text = doctor.objectForKey("name") as? String
        cell.lblPosition.text = doctor.objectForKey("position") as? String
        cell.lblHospital.text = "\(doctor.objectForKey("hospital"))  \(doctor.objectForKey("department"))"
        cell.lblGood.text = doctor.objectForKey("good") as? String

        return cell
    }

我们需要一个图片加载的第三方库,在Pod中添加pod 'Kingfisher', '~> 1.8'并update
完成后import Kingfisher,再到cellForRowAtIndexPath中添加一行对ivHead的修改
cell.ivHead.kf_setImageWithURL(NSURL(string: doctor.objectForKey("head") as! String)!)
再次运行,数据已经很完美的展示到界面上了:

QQ20151126-4.png

ok ,第6节结束,大家可以多找一些别的第三方SDK集成实验,现在的互联网就是一堆堆的轮子,大家要么造轮子,要么用轮子,很多好用的第三方已经给我们写好了,我们直接使用api就行,既然是这样,在满足需求的前提下,我当然是直接用轮子,让更多的精力放到编程的思想上去,不然我一个母语是C#的androider来学iOS的Swift怎么可能快起来呢?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值