我想写一个网络视频播放器

最近两个月跟着斯坦福大学白胡子老头的公开课学习了一下swift语言下的ios应用开发,作为实践,我计划开发自己的第一款App:网络视频播放器。

产品设计

什么,就你一个搬砖的还要产品设计?好好,没有产品设计那我就“借鉴”别人的总可以吧。
我想我的App应该是这样的:

首页片库页

栏目展示页面详情和播放

为啥要“借鉴”sohu的界面呢?因为他们的节目呈现方式和我所能使用的后台数据简直太吻合了,我能够使用的后台数据组织方式是这样的:
节目数据组织结构
整个视频数据总站点由若干个一级栏目组成,每一个一级栏目包含若干个二级栏目,二级栏目下有若干节目编排。数据组织就是这样的一个三层的树形组织。

数据获取、解析

解析

好了,有了目标,有了数据,第一步就是把数据解析出来,EPG返回给app应用的数据是json格式。ios中对json数据的解析不入Andoid那么便捷,这里json数据我直接使用的第三方库JsonJoy。github上swift版本的json解析库非常多,我试用下来觉得这一个我用着符合我的习惯。

使用JsonJoy解析json时,数据对象需要实现JSONJoy的protocol

public protocol JSONJoy {
        init(_ decoder: JSONDecoder)
    }

比如我的栏目对象定义:

struct Category: JSONJoy{
    var Name: String = “”
    var Code: String = “”
    var ParentCode: String?
    var TemplateCode: String = “”
    var Count: Int?

    init(_ decoder: JSONDecoder){
        Name = safeString(decoder,”Name”)
        Code = safeString(decoder, “Code”)
        ParentCode = safeString(decoder, “ParentCode”)
        TemplateCode = safeString(decoder, “TemplateCode”)
    }
}
func safeString(decoder: JSONDecoder, key: String) -> String {
    if var str = decoder[key].string {
        return str
    }
    return “”
}

拿到服务器返回的数据以后直接将数据扔给decoder就可以了。对了,数据怎么获取的呢?

数据获取

数据获取仍然是使用已有的轮子SwiftHttp,swifthttp封装了一个HTTPTask,具体的使用也是非常简单:

let task = HTTPTask()
let params: Dictionary<String,AnyObject> = [“param1”:param1,”param2”:param2,”param3”:””,”param4”:1,”param5”:50]
task.POST(“http://servicename”, parameters: params, success: { (response) -> Void in
    if let data = response.responseObject as? NSData {
          let str = NSString(data: data, encoding: NSUTF8StringEncoding)
          let decoder = JSONDecoder(data)
          let header = HttpHeader(decoder[“Response”][“Header”])
          if header.isSuccess(){
              /*......*/
           }
        }
     }, failure: { (error, response) -> Void in
                /*......*/
     })

总结

好了,今天就啰嗦这么多,介绍一下我的目标,以及我使用的轮子。
下一篇就啰嗦一下怎么展现一级栏目的数据,也就是片库那个页面

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值