暑期项目开发实训 Day6

来源:互联网 发布:linux如何下载ed2k 编辑:程序博客网 时间:2024/05/29 09:58

        虽然是周六,但是手头的活没干完,不敢休息可怜

        今天上午学院安排了IBM公司的讲座,关于Watson Analytics的。下午与晚上是自由时间,宅寝室里敲代码。

        先来说说上午的 WA 讲座吧,我个人觉得是非常好用的东西。

Standard process for data mining

跨行业数据的标准挖掘过程

 

商业理解:商业角度

数据理解:数据收集描绘

数据准备:为了建模准备

建模分析:多种建模方法

模型评估:选择最佳模型

模型部署:展现结果


然后是WA,WA是继IBM公司的SPSS和Modeler后的又一款重量级产品:

1.    一款云上数据分析解决方案。WA可以使用自动视图引导数据发现和预测分析,并生成半自动的报表。

2.    WA实现了基于自然语言的认知服务,可以为商务人士即时提供预测和可视化分析工具,WA推出基于云服务的免费增值应用版本,可在电脑及移动设备上使用。

3.    WA可提供自助式分析功能,包括数据访问、数据清洗、数据仓库、帮助企业用户获取和准备数据,并基于此进行分析、实现结果可视化、为使用者采取有效行动和开展进一步交互提供基础和便利。

然后IBM公司的leader给我们演示了关于2007-2011好莱坞电影信息的数据挖掘~

总的来说,WA的理念是:汇总你的数据,运行各种可能的方法,为你提供结果,实现基本的可视化、特定领域的可视化。

可以说是半自动化生成报表的利器,而且挺精美的。

普及的关键,还是价格问题。

免费版0刀,只能处理列很窄的数据集。个人版要30刀每月,专业版则是80刀。

等我有钱了我再考虑专业版吧!

----------------------------------下面是今天完成的任务------------------------------------

很遗憾!今天依然没有完成全部工作,目前进行到 07的尾巴出了点Bug,还剩下08,09,10,11。我争取周日早点起床干活!

什么是plist?

plist是 property list,是XML文件格式,存储了结构化数据。

它是IOS中非常常见的,适合存储多种类型的数据,而且非常方便!非常方便!!

What’s not to like!

06 部分,我们需要保持 CL 的item,因此需要使用 NSCoder 系统。它可以让对象存储数据为结构化形式的文件。

这里又有一个 encoding 和 decoding 的概念区分!converting obj to files and back again!

简单来说就是:

第一阶段:iPhone 存储 中的 obj 保存到 iPhone 的 flash drive 中,以plist文件的形式。

第二阶段:App is terminated (终结得) ,啥也不干。

第三阶段:App is launched,plist 文件中的数据加载回obj。

保存的方法:(注意encode)

   // 保存item 得到items array的内容,分两步骤转换为二进制数据块,写入文件    func saveChecklistItems() {        let data = NSMutableData()        let archiver = NSKeyedArchiver(forWritingWith: data)        archiver.encode(items, forKey: "ChecklistItems")        archiver.finishEncoding()        data.write(to: dataFilePath(), atomically: true)            }


加载的方法:(注意decode)

    // 加载 items    func loadChecklistItems() {        //1. get datafilepath        let path = dataFilePath()                //2 load the contents of Checklists.plist into a new Data obj        if let data = try? Data(contentsOf: path) {                    //3 find plist, load the entire array and its contents from the file            let unarchiver = NSKeyedUnarchiver(forReadingWith: data)            items = unarchiver.decodeObject(forKey: "ChecklistItems") as! [ChecklistItem]            unarchiver.finishDecoding()        }    }


06部分还是很简单的,最后如作者所言:

Awesome! You've written an app that not only lets you add and edit data, but that also persists the data between sessions.

Don't rush through these tutorials - there are no prizes for finishing first.

Rather than going fast, take your time to truly understand what you've been doing!

这一刻我感到书的作者简直是哲学家,治愈了我们这群慢工出细活的拖延症。



07部分需要创建多重Checklists了。

毕竟用户可能有多个表要打卡/记录嘛。比如亲友的生日,比如普通日程,比如最近好看的电影。。。需要分类记录。

    required init?(coder aDecoder: NSCoder) {        //1        lists = [Checklist]()        //2        super.init(coder: aDecoder)        //3        var list = Checklist(name: "Birthdays")        lists.append(list)        //4        list = Checklist(name: "Groceries")        lists.append(list)                list = Checklist(name: "Cool Apps")        lists.append(list)                list = Checklist(name: "To Do")        lists.append(list)            }


存在 4种 创建 table view cells 的方法:

1. Using prototype cells.

2. Using static cells.

3. Using a nib file.

4. Using dequeueReusableCell


注意:总是询问 table view 是否存在cell可以被循环利用,而不要频繁去创建新的Cell ( 以免内存溢出 )

对象创建远远比对象复用慢得多!!

为了更好的性能,请复用Cell !


考虑一下,我创建多个Checklists,和创建多个ChecklistItem,类本质是否相同呢?几乎是相同的!

我需要做的额外工作只是,

让第一个导航条指向拥有众多Checklists的根表视图,

然后再点击其中单个Checklist进入对应的表视图,

然后再操作单个Item。

而且我需要对根表视图拥有与单个表视图同样的操作:编辑、增加、删除Checklist(Item)

(:此处我很想插一个图,但是CSDN插图实在太麻烦了!解释又很费劲!)

很明显这里又要用到delegate代理了。

还是来看看需要实现的协议吧:

protocol ListDetailViewControllerDelegate: class {    func listDetailViewControllerDidCancel(_ controller: ListDetailViewController)        func listDetailViewController(_ controller: ListDetailViewController,                                  didFinishAdding checklist: Checklist)        func listDetailViewController(_ controller: ListDetailViewController,                                  didFinishEditing checklist: Checklist)}

今天遗留的问题是:

我在根表视图Checklists点击 + 号, 可以进入Add页面,但是点击Done不起作用。点击Cancel也是如此。

明早起来好好想想。。。。


原创粉丝点击