<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>“我”的开发笔记 &#187; 09 &#8211; 数据（Data）</title>
	<atom:link href="http://c.gzl.name/archives/category/iphone/data/feed" rel="self" type="application/rss+xml" />
	<link>http://c.gzl.name</link>
	<description>IPhone, Cocoa, PHP, Javascript, JQuery, Actionscript, etc...</description>
	<lastBuildDate>Thu, 29 Dec 2011 07:20:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>从0开始Core Data（1）</title>
		<link>http://c.gzl.name/archives/431</link>
		<comments>http://c.gzl.name/archives/431#comments</comments>
		<pubDate>Tue, 01 Sep 2009 19:02:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[09 - 数据（Data）]]></category>
		<category><![CDATA[15 - CoreData]]></category>
		<category><![CDATA[Cocoa开发]]></category>
		<category><![CDATA[iPhone开发]]></category>
		<category><![CDATA[Core Data]]></category>
		<category><![CDATA[CoreData]]></category>
		<category><![CDATA[Xcode]]></category>
		<category><![CDATA[数据管理]]></category>

		<guid isPermaLink="false">http://c.gzl.name/?p=431</guid>
		<description><![CDATA[大家都有Snow Leopard和XCode 3.2了吧？会发现XCode变了不少，帅拉！ 那我们点击“Create a new Xcode project”来开始我们的Core Data程序工程吧！ 在这里，XCode已经给我们准备好了一个几乎可以直接去用的程序模板，直接选择“基于导航的应用程序”，然后记得点选“Use Core Data for storage” 建立好的程序名为XCDtest01，我们尝试编译运行，看看得到的程序是什么样的： 基本上来说，这个程序把什么都给我们弄好了，一个程序，在点击添加按钮之后添加现在的时间标签，如果点击“Edit”编辑按钮，就进入编辑模式，可以删除任意条信息。 如果点开xcdatamodel文件，我们可以看到，其中的实体为Event，有一个参数，名为“时间标签”。也就是说，如果我们想对这个列表视图中的数据作更改，只需要适当更改这个实体的参数，并配置- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 代理条目就可以显示适当的内容了。 这个预置程序与我们之前讨论的程序不同的，在于这个程序中并没有配置一个可变数组（NSMutableArray）来作数据副本，以达到高速存储的目的。因为Core Data在向磁盘和内存操作，NSMutableArray是内存操作，速度上比较有优势。但是我们有的这个小程序太小了，再者苹果有可能认为那种方法是非标准的。所以在这里才没有那么作 NSManagedObject *managedObject = &#91;fetchedResultsController objectAtIndexPath:indexPath&#93;; cell.textLabel.text = &#91;&#91;managedObject valueForKey:@&#34;timeStamp&#34;&#93; description&#93;; 在这个程序的cell配置代理里面，仅仅是从“获取操作控制器”中得到了“被管理对象”，然后再读取其中的内容到cell的text中。 希望大家也使用这个模板，自己创建一个Core Data程序，然后简单的理解一下代码。下次我们聊只使用基于Window的程序模板+Core Data来创建程序]]></description>
		<wfw:commentRss>http://c.gzl.name/archives/431/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CoreData实例分析学习（2）</title>
		<link>http://c.gzl.name/archives/412</link>
		<comments>http://c.gzl.name/archives/412#comments</comments>
		<pubDate>Fri, 28 Aug 2009 04:59:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[09 - 数据（Data）]]></category>
		<category><![CDATA[15 - CoreData]]></category>
		<category><![CDATA[Cocoa开发]]></category>
		<category><![CDATA[iPhone开发]]></category>
		<category><![CDATA[实例]]></category>
		<category><![CDATA[Core Data]]></category>
		<category><![CDATA[CoreData]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[数据管理]]></category>

		<guid isPermaLink="false">http://c.gzl.name/?p=412</guid>
		<description><![CDATA[在我们分析了程序主代理文件（AppDelegate）之后，我们先来看看一对自动生成的文件Event.h/.m @interface Event : NSManagedObject &#123;&#125; @property &#40;nonatomic, retain&#41; NSDate *creationDate; @property &#40;nonatomic, retain&#41; NSNumber *latitude; @property &#40;nonatomic, retain&#41; NSNumber *longitude; @end #import &#34;Event.h&#34; @implementation Event @dynamic creationDate; @dynamic latitude; @dynamic longitude; @end 从上面我们能看出来，一个实体Event也就会被生成一个NSManagedObject（被管理对象），然后任何accessor和getter都是被动态生成的，我们其实完全不用操任何的心，只需要在xcdatamodel文件里面配置后，点击添加文件，添加NSManagedObject文件，就会看到自动感知的类对象，然后生成就可以了。 下面是根视图控制器，是一个列表视图（UITableViewController） #import &#60;CoreLocation/CoreLocation.h&#62; @interface RootViewController : UITableViewController &#60;CLLocationManagerDelegate&#62; &#123; //看到是UITableViewController的子类，由于需要使用Core Location， //所以在后面履行其protocal NSMutableArray *eventsArray; NSManagedObjectContext *managedObjectContext; //这个被管理对象内容器就是我们真正对Core Data数据的操作对象 CLLocationManager *locationManager; //用来得到地理位置的Core [...]]]></description>
		<wfw:commentRss>http://c.gzl.name/archives/412/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CoreData实例分析学习（1）补</title>
		<link>http://c.gzl.name/archives/408</link>
		<comments>http://c.gzl.name/archives/408#comments</comments>
		<pubDate>Thu, 27 Aug 2009 00:18:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[09 - 数据（Data）]]></category>
		<category><![CDATA[15 - CoreData]]></category>
		<category><![CDATA[Cocoa开发]]></category>
		<category><![CDATA[iPhone开发]]></category>
		<category><![CDATA[Core Data]]></category>
		<category><![CDATA[CoreData]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[数据管理]]></category>

		<guid isPermaLink="false">http://c.gzl.name/?p=408</guid>
		<description><![CDATA[CoreData实例分析学习（1） 补一下“实体”的概念，实体也就是Entity，在打开xcdatamodel文件的时候，我们可以看到 在这里，这个实体叫“Event”，而实体的参数有“创建日期”，“纬度”，“经度”。也就是说，其实这个实体被使用后，我们可以这样理解，实体就是表名，而参数就是列名，然后整个实体就是一张表。当这个Model描述多个实体的关系的时候，就像是一个关系型数据库一样，虽然苹果说“不是！”]]></description>
		<wfw:commentRss>http://c.gzl.name/archives/408/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CoreData实例分析学习（1）</title>
		<link>http://c.gzl.name/archives/393</link>
		<comments>http://c.gzl.name/archives/393#comments</comments>
		<pubDate>Wed, 26 Aug 2009 23:10:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[09 - 数据（Data）]]></category>
		<category><![CDATA[15 - CoreData]]></category>
		<category><![CDATA[Cocoa开发]]></category>
		<category><![CDATA[iPhone开发]]></category>
		<category><![CDATA[实例]]></category>
		<category><![CDATA[Core Data]]></category>
		<category><![CDATA[CoreData]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[数据管理]]></category>

		<guid isPermaLink="false">http://c.gzl.name/?p=393</guid>
		<description><![CDATA[Core Data是个好东西，在数据储存操作上速度快，容易操作，是一种类似关系数据库的东西。但是有些不那么好学，那到底Core Data是怎么操作的呢？怎么用呢？怎么来编程呢？我们一起来学习吧，接下来使用苹果提供的实例程序Locations来作分析： >程序介绍： 右侧是改程序的截图，基本上来说就是通过使用Core Location来得到当时的位置，然后在点击“+”的时候记录下当时的经纬度。通过UITableViewController的功能来添加，编辑，删除等功能。整体程序使用Core Data来储存数据，实体（Entity）为一个位置，包括以下参数：1，时间（收集数据的时间）2，纬度，3，经度 首先我们看看该程序的AppDelegate.h @interface LocationsAppDelegate : NSObject &#123; UIWindow *window; UINavigationController *navigationController; //导航栏 &#160; //以下定义了Core Data的三个决定性组建，等后面m文件里面再多介绍 NSPersistentStoreCoordinator *persistentStoreCoordinator; NSManagedObjectModel *managedObjectModel; NSManagedObjectContext *managedObjectContext; &#125; &#160; @property &#40;nonatomic, retain&#41; IBOutlet UIWindow *window; @property &#40;nonatomic, retain&#41; UINavigationController *navigationController; &#160; - &#40;IBAction&#41;saveAction:sender; //这个没找到作用...根本就没用到IB &#160; //还记得吧，nonatomic是因为这个程序是单线程 @property &#40;nonatomic, retain, readonly&#41; NSManagedObjectModel *managedObjectModel; @property &#40;nonatomic, retain, [...]]]></description>
		<wfw:commentRss>http://c.gzl.name/archives/393/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPhone上的JSON（三）JSON+UITableView</title>
		<link>http://c.gzl.name/archives/318</link>
		<comments>http://c.gzl.name/archives/318#comments</comments>
		<pubDate>Mon, 10 Aug 2009 22:12:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[06 - 视图控制器（ViewControllers）]]></category>
		<category><![CDATA[08 - 列表视图（TableViews）]]></category>
		<category><![CDATA[09 - 数据（Data）]]></category>
		<category><![CDATA[iPhone开发]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[UITableView]]></category>
		<category><![CDATA[UITableViewController]]></category>

		<guid isPermaLink="false">http://c.gzl.name/?p=318</guid>
		<description><![CDATA[既然JSON这么好，它怎么和UITableView结合使用呢？ 首先看看我们的JSON文件吧： { &#34;老张家&#34;:[&#34;大张&#34;,&#34;二张&#34;,&#34;三张&#34;], &#34;老李家&#34;:[&#34;大李&#34;,&#34;二李&#34;] } 完成的作品是这样样子的～～(点击放大阿～～) 好，开始打代码吧。 1，首先copy JSON库到当前的Project里面。 2，建立一个数据源类。我给它起名叫MyDataSource, 看看里面都有什么吧： @interface MyDataSource : NSObject &#123;&#125; + &#40;id&#41;dataSource; @end &#160; #import &#34;JSON.h&#34; &#160; @implementation MyDataSource + &#40;id&#41;dataSource &#123; NSString* JSONString = &#91;NSString stringWithContentsOfFile:&#91;&#91;NSBundle mainBundle&#93; pathForResource:@&#34;data&#34; ofType:@&#34;json&#34;&#93; encoding:NSUTF8StringEncoding error:nil&#93;; return &#91;JSONString JSONValue&#93;; &#125; @end 里面非常简单，只有一个类方法dataSource。在其中我们读取json文件的内容到一个NSString中，并用JSON框架来解读成一个NSDictionary，返回值为id。因为虽然大多的时候最外的对象都为NSDictionary，但是出于严谨，万一是NSArray不就崩溃了。所以使用id，这样其实就有再次可以用的特性了。 3，建立一个UITableViewController, 然后作适当的设置： #import &#34;MyTableViewController.h&#34; #import &#34;MyDataSource.h&#34; &#160; @implementation MyTableViewController &#160; [...]]]></description>
		<wfw:commentRss>http://c.gzl.name/archives/318/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPhone上的JSON（二）</title>
		<link>http://c.gzl.name/archives/313</link>
		<comments>http://c.gzl.name/archives/313#comments</comments>
		<pubDate>Mon, 10 Aug 2009 20:36:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[09 - 数据（Data）]]></category>
		<category><![CDATA[iPhone开发]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[NSDictionary]]></category>

		<guid isPermaLink="false">http://c.gzl.name/?p=313</guid>
		<description><![CDATA[上一期基本上讨论了Objc的JSON框架的原理，现在简单介绍一下使用。 在CS193P的课堂程序上，列出了以下函数： + &#40;id&#41;fetchJSONValueForURL:&#40;NSURL *&#41;url &#123; NSString *jsonString = &#91;&#91;NSString alloc&#93; initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil&#93;; &#160; id jsonValue = &#91;jsonString JSONValue&#93;; &#91;jsonString release&#93;; return jsonValue; &#125; 基本上这个函数方法就是将一个传入的互联网地址，当然是一个.json文件的位置。然后传出的就是一个NSDictionary~ 我在使用的时候，写了一个方法来调用它： + &#40;NSDictionary *&#41;fetchLibraryInformation &#123; NSString *urlString = &#91;NSString stringWithFormat:@&#34;http://gzl.name/appData/MyFodian/Lib/main.json&#34;&#93;; NSURL *url = &#91;NSURL URLWithString:urlString&#93;; NSLog&#40;@&#34;fetching library data&#34;&#41;; return &#91;self fetchJSONValueForURL:url&#93;; &#125; 这个方法不过是将我存放json文件的地址告诉了前面的方法，然后返回这个NSDictionary，这回的返回值我用得NSDictionary，其实和id在这里没有区别。记得在使用这个对象的时候还要retain一下，否则一会儿就没有咯。因为JSONValue方法返回的应该是一个autorelease对象。 接下来我们就可以使用这个NSDictionary中的数据拉！ 第一期请参看iPhone上的JSON]]></description>
		<wfw:commentRss>http://c.gzl.name/archives/313/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>iPhone中的SQLite应用</title>
		<link>http://c.gzl.name/archives/195</link>
		<comments>http://c.gzl.name/archives/195#comments</comments>
		<pubDate>Wed, 01 Jul 2009 21:16:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[09 - 数据（Data）]]></category>
		<category><![CDATA[iPhone开发]]></category>
		<category><![CDATA[SQLite]]></category>

		<guid isPermaLink="false">http://c.gzl.name/?p=195</guid>
		<description><![CDATA[SQLite是基于C的API，在iPhone中的运行速度超级快（在苹果网站上也有一个对比，确实应该是速度最快的）。 由于在iPhone3.0上已经支持了Core Data，是苹果一个新的API，并且是基于SQlite的。速度也是非常快吧，信不信由你。所以我们对SQLite仅需要懂一些即可，以下是一些基础信息 打开数据库 sqlite3 *database = NULL; //建立一个sqlite数据库变量 &#160; int sqlite3_open&#40;const char *文件名, sqlite3 **db&#41;; //那个文件名需要是cString， //之后那个db对象使用我们建立的database变量 &#160; //以下是一个开打的例子： NSString *fileAddress = &#91;&#91;NSBundle mainBundle&#93; pathForResource:@&#34;预存文件的文件名&#34; ofType:@&#34;db&#34;&#93;; //db是扩展名 &#160; if&#40;sqlite3_open&#40;&#91;fileAddress UTF8String&#93;, &#38;amp;database&#41; == SQLITE_OK&#41; //UTF8String方法转换NSString为cString 执行一个SQLite语句： int sqlite3_exec&#40;sqlite3 *db, const char *sql, int &#40;*callback&#41;&#40;void*,int,char**,char**&#41;, void *context, char **error&#41;; 关闭一个数据库： int sqlite3_close&#40;sqlite3 *db&#41;; //这个不用解释了吧 一个响应函数的格式： int [...]]]></description>
		<wfw:commentRss>http://c.gzl.name/archives/195/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>读取一个.plist文件</title>
		<link>http://c.gzl.name/archives/20</link>
		<comments>http://c.gzl.name/archives/20#comments</comments>
		<pubDate>Thu, 11 Jun 2009 21:06:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[09 - 数据（Data）]]></category>
		<category><![CDATA[iPhone开发]]></category>
		<category><![CDATA[Bundle]]></category>
		<category><![CDATA[plist]]></category>

		<guid isPermaLink="false">http://c.gzl.name/?p=20</guid>
		<description><![CDATA[P 记得是CS193P里的Presence2吧，需要读取一个plist作为数据源。 以下就是一个简单的读取plist到NSDictionary或NSArray的代码。 NSBundle *bundle = &#91;NSBundle mainBundle&#93;; //取得mainBundle NSString *plistPath = &#91;bundle pathForResource:@&#34;文件名&#34; ofType:@&#34;plist&#34;&#93;; //取得文件路径 // 或可以写成 NSString *plistPath = &#91;&#91;NSBundle mainBundle&#93; pathForResource:@&#34;文件名&#34; ofType:@&#34;plist&#34;&#93;; &#160; //读取到一个NSDictionary NSDictionary *dictionary = &#91;&#91;NSDictionary alloc&#93; initWithContentsOfFile:plistPath&#93;; &#160; //读取到一个NSArray NSArray *array = &#91;&#91;NSArray alloc&#93; initWithContentsOfFile:plistPath&#93;; 一个小提醒，读出来的可能是复杂对象，比如twitter的恶心json文件]]></description>
		<wfw:commentRss>http://c.gzl.name/archives/20/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

