iOS笔记(21) CoreData (三) NSFetchedResultsController

CoreData (三)

NSFetchedResultsController

什么是NSFetchedResultsController

NSFetchedResultsController是一个让人爱恨交加的一个类。如果使用得当,NSFetchedResultsController能帮组减少很多代码。如果使用不当,整个App就随时崩溃。

NSFetchedResultsController我觉得最初的设计应该是为了配合UITableView来使用的。因为UITableView在iOS的应用App中出场次数实在是太高了.而且UITableView是重要的数据展示View,所以需要频繁的向Model去请求数据,但是根据MVC来说,V不应该直接跟M联系的.这样就在Core Data下面出现了一个C–NSFetchedResultsController来把V和M协调起来. NSFetchedResultsController就是这个C.

NSFetchedResultsController是有两个重要的功能。

第一:NSFetchedResultsController是作用在Core Data上的,通过NSFetchRequest来查询Core Data里面的数据.可以返回按照组分好的数据.这样便于UITableView来显示.

第二:但Modle改变的时候NSFetchedResultsController能及时的发出通知.准确的说,应该是当NSManagedObjectContext发生改变的时候,NSFetchedResultsController能知道这些变化,然后发出通知出来.以便UITableview能及时的更新.

Read more

iOS笔记(20)

UITableView简单解析

UITableView是在iOS开发中,展示大量内容的首选。我个人认为的原有有一下几点:

  1. UITableView的展现形式是为移动设备专门设计过的。有较好的人机交互体验。
  2. 从技术角度来说UITableView具有重用和延迟加载等特性。如果使用恰当。可以获得一个App流畅的用户体验。

这样,使得UITableView在iOS App中随处可见。

原生应用

一些有名的App.图片信息较老

包括游戏

这些都说明UITableView在一个App中其实是一个很常用的控件。我应该好好的学习它。

Read more

iOS笔记(19)

Core Data (二)

上次只是说了三个Core Data栈基本类。这次准备介绍一下常用的类。

NSManagedObject

Core Data是一次底层数据封装成面向对象的技术。最直接的表现就是在SQLite里面的一条记录在Core Data里面的表现是一个NSManagedObject对象。因此我们的增删改查都是基于操作对象的。恩这里多说一句,NSManagedObject是相对NSManagedObjectContext里面是唯一的。而真实的应用情况可能是NSManagedObjectContext会有多个。而NSManagedObjectContext线程不是安全的,所以可能有你多个NSManagedObjectContext里面各自有指向同一条数据的不同的NSManagedObject。这个情况需要你的程序设计和逻辑上去解决。暂时不讨论。

Read more

iOS笔记(18)

Core Data (一)

恩,用Core Data也有一段时间了。大大小小的坑也都坑过了。重来没有认真的记录一次。这次需要好好的理一理Core Data。就当一次绝好的机会记录下来。也为了自己加深认识。

为什么要用Core Data

CoreData的学习是需要一定成本的。以至于我认识的人很少在用,大家要不就是用一个FMDB。或者做的App是一个已有的Web的延伸,数据直接用Web端的Api取回来就好了。

我们要用Core Data的理由有以下几点:

  1. Core Data是对底层存储的一次封装。封装了以后就变成ORM的框架。这样就变成操作对象。Core Data自己去进行数据的保存。
  2. 使用Core Data而不是FMDB,让整个程序架构更加的面向对象。
  3. Core Data仅仅使用了Objective-C和Core Foundation,你不必去加入一些第三方的库。
  4. Core Data是Apple的原生技术。每年的WWDC都能看到新特性的加入和讲授。
  5. Core Data支持iCloud。而使用iCloud的App。Apple推荐的可能性增加。
  6. 有了iCloud为以后Apple的全平台数据共享打下基础

所以,没有理由拒绝使用Core Data做为你App的持久化。Core Data应该是一个跟Apple混的第一选择。

Read more

Mac笔记 (1)

ssh远程登录Mac OS X

近一年抱了Apple大腿之后,各种表弟、师兄、朋友陆续也开始抱Apple大腿。难免遇到各种问题,这个时候在QQ交流效率低下,简直不可忍受。也不知大腾讯啥时候支持一下QQ for Mac的远程协助。这样有时候也可以帮助一下在家的老爸老妈解决一些PC上的问题。大神们绕道无鄙视。OS X乃纯Unix血统。教科书上都写了*nix系统可以ssh登录过去搞定一切。就想着可以用ssh来解决问题。无奈网络基础确实是挂课的水平曾经尝试过一次没有成功。这次又再次遇到远程协助的问题就好好Google了一次。研究了好一会儿终于搞定,在此记录。

Read more