<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Cocoa Tutorial: Sync Services without Core Data</title>
	<atom:link href="http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/</link>
	<description>Taglines are for Windows programmers</description>
	<lastBuildDate>Mon, 05 Dec 2011 10:55:51 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>By: Agent Bangla</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1615</link>
		<dc:creator>Agent Bangla</dc:creator>
		<pubDate>Mon, 30 May 2011 10:02:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1615</guid>
		<description>&lt;p&gt;Hellow Marcus,&lt;/p&gt;

&lt;p&gt;Thanks for the great tutorial. I have found it handy as I am trying to develop an application that can read/write iCal data from Calendar.SyncSchema. I am finding it hard to understand the effects of Sync Schema relationships. Could you please help me to understand, how the schema relationships are maintained in your project or more specifically with ISyncSessionDriver?
Thanks&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Hellow Marcus,</p>

<p>Thanks for the great tutorial. I have found it handy as I am trying to develop an application that can read/write iCal data from Calendar.SyncSchema. I am finding it hard to understand the effects of Sync Schema relationships. Could you please help me to understand, how the schema relationships are maintained in your project or more specifically with ISyncSessionDriver?
Thanks</p>]]></content:encoded>
	</item>
	<item>
		<title>By: newacct</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1529</link>
		<dc:creator>newacct</dc:creator>
		<pubDate>Tue, 18 Jan 2011 23:13:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1529</guid>
		<description>&lt;p&gt;for (NSString *recordID in [[self recordLookup] allKeys])&lt;/p&gt;

&lt;p&gt;should be written as&lt;/p&gt;

&lt;p&gt;for (NSString *recordID in [self recordLookup])&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>for (NSString *recordID in [[self recordLookup] allKeys])</p>

<p>should be written as</p>

<p>for (NSString *recordID in [self recordLookup])</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Ross P</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1445</link>
		<dc:creator>Ross P</dc:creator>
		<pubDate>Wed, 25 Aug 2010 16:38:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1445</guid>
		<description>&lt;p&gt;So, what does &quot;last modified&quot; really mean?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>So, what does &#8220;last modified&#8221; really mean?</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Marcus Zarra</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1444</link>
		<dc:creator>Marcus Zarra</dc:creator>
		<pubDate>Wed, 25 Aug 2010 15:41:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1444</guid>
		<description>&lt;p&gt;No, clocks can and do change so timestamps can never be trusted in syncing.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>No, clocks can and do change so timestamps can never be trusted in syncing.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Ross P</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1443</link>
		<dc:creator>Ross P</dc:creator>
		<pubDate>Wed, 25 Aug 2010 15:39:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1443</guid>
		<description>&lt;p&gt;But, if the client and the truth on both on the same desktop, then all the timestamps would be using the same clock -- so no issue as to clock accuracy.  Plus, if &quot;conflict resolution&quot; can be resolved by &quot;last modified&quot;, then doesn&#039;t this suggest that timestamps really are used?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>But, if the client and the truth on both on the same desktop, then all the timestamps would be using the same clock &#8212; so no issue as to clock accuracy.  Plus, if &#8220;conflict resolution&#8221; can be resolved by &#8220;last modified&#8221;, then doesn&#8217;t this suggest that timestamps really are used?</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Marcus Zarra</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1438</link>
		<dc:creator>Marcus Zarra</dc:creator>
		<pubDate>Tue, 17 Aug 2010 02:12:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1438</guid>
		<description>&lt;p&gt;I have already answered this question twice.  The truth is on &lt;strong&gt;the desktop&lt;/strong&gt;.  There is no server.  Think of MobileMe as the only existing sync client that is external to the desktop that sync services is being run on.&lt;/p&gt;

&lt;p&gt;In addition, Core Data creates a delta file between syncs; &lt;em&gt;even when the sync server is sitting right there&lt;/em&gt;.  The delta file is a file that records what objects have changed since the last sync.  Core Data then uses that delta file for the next sync to make it faster.  On the desktop this file is called the fast sync file.  It is part of the Sync Services framework that is added onto Core Data on the desktop.&lt;/p&gt;

&lt;p&gt;Keeping track of timestamps is a bad idea in syncing because no two clocks are exactly the same.  Keeping a delta of what has changed (Core Data actually keeps this at the entity level) is the most sane way to keep track of what needs to be synced next.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>I have already answered this question twice.  The truth is on <strong>the desktop</strong>.  There is no server.  Think of MobileMe as the only existing sync client that is external to the desktop that sync services is being run on.</p>

<p>In addition, Core Data creates a delta file between syncs; <em>even when the sync server is sitting right there</em>.  The delta file is a file that records what objects have changed since the last sync.  Core Data then uses that delta file for the next sync to make it faster.  On the desktop this file is called the fast sync file.  It is part of the Sync Services framework that is added onto Core Data on the desktop.</p>

<p>Keeping track of timestamps is a bad idea in syncing because no two clocks are exactly the same.  Keeping a delta of what has changed (Core Data actually keeps this at the entity level) is the most sane way to keep track of what needs to be synced next.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Ross P</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1437</link>
		<dc:creator>Ross P</dc:creator>
		<pubDate>Tue, 17 Aug 2010 02:06:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1437</guid>
		<description>&lt;p&gt;So, let&#039;s start back at the top, and assume we are using (or trying to use) Apple Sync Services.  In cases where the clients (assume Mac laptops traveling on airplanes) are NOT always connected to the server (assume a Mac desktop back at the office), a sync CANNOT take place after each change at a client, but must be done on a delayed basis. In such cases, how does Core Data KNOW that an entity or property has changed? Does it compare the “Last Modified” timestamp to the Last Sync timestamp? Does it set a flag at the entity level and then clear those flags after a successful sync? Does it set a flag at the property level and then clear those flags after a successful sync? Does it create a temporary snapshot at the beginning of a sync session and then permanently save that snapshot after the sync completes successfully?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>So, let&#8217;s start back at the top, and assume we are using (or trying to use) Apple Sync Services.  In cases where the clients (assume Mac laptops traveling on airplanes) are NOT always connected to the server (assume a Mac desktop back at the office), a sync CANNOT take place after each change at a client, but must be done on a delayed basis. In such cases, how does Core Data KNOW that an entity or property has changed? Does it compare the “Last Modified” timestamp to the Last Sync timestamp? Does it set a flag at the entity level and then clear those flags after a successful sync? Does it set a flag at the property level and then clear those flags after a successful sync? Does it create a temporary snapshot at the beginning of a sync session and then permanently save that snapshot after the sync completes successfully?</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Marcus Zarra</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1436</link>
		<dc:creator>Marcus Zarra</dc:creator>
		<pubDate>Tue, 17 Aug 2010 01:57:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1436</guid>
		<description>&lt;p&gt;Sync Services was built long before the iPhone was on the drawing board.  It is designed for sharing data between multiple applications (two different browsers sharing bookmarks) and for sharing data through MobileMe.  Both of which are extremely useful.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Sync Services was built long before the iPhone was on the drawing board.  It is designed for sharing data between multiple applications (two different browsers sharing bookmarks) and for sharing data through MobileMe.  Both of which are extremely useful.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Ross P</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1435</link>
		<dc:creator>Ross P</dc:creator>
		<pubDate>Tue, 17 Aug 2010 00:33:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1435</guid>
		<description>&lt;p&gt;Then, what&#039;s the point of Apple&#039;s &quot;Sync Services Programming Guide&quot;?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Then, what&#8217;s the point of Apple&#8217;s &#8220;Sync Services Programming Guide&#8221;?</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Marcus Zarra</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1434</link>
		<dc:creator>Marcus Zarra</dc:creator>
		<pubDate>Mon, 16 Aug 2010 21:36:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1434</guid>
		<description>&lt;p&gt;There is no built in sync&#039;ing mechanism at this time for iOS that a 3rd party developer can access.  There are a few open source and other third party solutions being developed such as ZSync.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>There is no built in sync&#8217;ing mechanism at this time for iOS that a 3rd party developer can access.  There are a few open source and other third party solutions being developed such as ZSync.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Ross P</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1433</link>
		<dc:creator>Ross P</dc:creator>
		<pubDate>Mon, 16 Aug 2010 21:28:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1433</guid>
		<description>&lt;p&gt;Just trying to assess the feasibility of investing in the development of an application that requires sync and might potentially be integrated with Contacts.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Just trying to assess the feasibility of investing in the development of an application that requires sync and might potentially be integrated with Contacts.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Marcus Zarra</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1432</link>
		<dc:creator>Marcus Zarra</dc:creator>
		<pubDate>Mon, 16 Aug 2010 21:23:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1432</guid>
		<description>&lt;p&gt;That is an Apple application which has absolutely nothing to do with this topic.  Apple is using a &lt;em&gt;PRIVATE&lt;/em&gt; API.  They could be using Sync Services or little furry rodents.  Doesn&#039;t matter, its a private API.&lt;/p&gt;

&lt;p&gt;3rd Party Developers cannot use Sync Services on the iPhone at this time even if it does potentially exist for Apple to use.&lt;/p&gt;

&lt;p&gt;Is there a reason you are going down this path or are you just trying to wind me up?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>That is an Apple application which has absolutely nothing to do with this topic.  Apple is using a <em>PRIVATE</em> API.  They could be using Sync Services or little furry rodents.  Doesn&#8217;t matter, its a private API.</p>

<p>3rd Party Developers cannot use Sync Services on the iPhone at this time even if it does potentially exist for Apple to use.</p>

<p>Is there a reason you are going down this path or are you just trying to wind me up?</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Ross P</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1431</link>
		<dc:creator>Ross P</dc:creator>
		<pubDate>Mon, 16 Aug 2010 21:18:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1431</guid>
		<description>&lt;p&gt;So, if I have an iPhone to use while traveling, and a Mac desktop back at my office, and I want to keep my Contacts in sync at all times (when I have an Internet connection for the iPhone), how do I do that?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>So, if I have an iPhone to use while traveling, and a Mac desktop back at my office, and I want to keep my Contacts in sync at all times (when I have an Internet connection for the iPhone), how do I do that?</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Marcus Zarra</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1430</link>
		<dc:creator>Marcus Zarra</dc:creator>
		<pubDate>Mon, 16 Aug 2010 21:12:58 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1430</guid>
		<description>&lt;p&gt;It does not exist on the iPhone as a public API and the hooks for Core Data are also not in any of the public API.  So at this time it does not exist on the iPhone.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>It does not exist on the iPhone as a public API and the hooks for Core Data are also not in any of the public API.  So at this time it does not exist on the iPhone.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Ross P</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1429</link>
		<dc:creator>Ross P</dc:creator>
		<pubDate>Mon, 16 Aug 2010 21:07:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1429</guid>
		<description>&lt;p&gt;Interesting.  In Apple&#039;s Sync Services Programming Guide, it states &quot;Users might have several computers, at home and at work, an iPhone, an iPod and other cell phones. Users will want to automatically sync data on all their computers and devices—especially, contacts and calendars which are supported on most devices.&quot;&lt;/p&gt;

&lt;p&gt;That appears to say that sync services DOES exist on the iPhone.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Interesting.  In Apple&#8217;s Sync Services Programming Guide, it states &#8220;Users might have several computers, at home and at work, an iPhone, an iPod and other cell phones. Users will want to automatically sync data on all their computers and devices—especially, contacts and calendars which are supported on most devices.&#8221;</p>

<p>That appears to say that sync services DOES exist on the iPhone.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Marcus Zarra</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1428</link>
		<dc:creator>Marcus Zarra</dc:creator>
		<pubDate>Mon, 16 Aug 2010 19:44:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1428</guid>
		<description>&lt;p&gt;There is no sync services on the iPhone.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;IF&lt;/em&gt; there were then it would keep a delta file as I mentioned.&lt;/p&gt;

&lt;p&gt;Without a delta file then each property of each record would need to be compared to determine what has changed.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>There is no sync services on the iPhone.</p>

<p><em>IF</em> there were then it would keep a delta file as I mentioned.</p>

<p>Without a delta file then each property of each record would need to be compared to determine what has changed.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Ross P</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1427</link>
		<dc:creator>Ross P</dc:creator>
		<pubDate>Mon, 16 Aug 2010 19:40:25 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1427</guid>
		<description>&lt;p&gt;No, I&#039;m talking about a case where the &quot;client&quot; is an iPhone (for example) that may not always be connected to a server (for example, a change is made while traveling on a plane).  So, when the sync does occur, the client must know what changed since the last sync.  Thus, my question -- how does it know what changed?  Does it compare the “Last Modified” timestamp to the Last Sync? Does it set a flag at the entity level and then clear those flags after a successful sync? Does it set a flag at the property level and then clear those flags after a successful sync? Does it create a temporary snapshot at the beginning of a sync session and then permanently save that snapshot after the sync completes successfully?  Does it find some other way to identify changes?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>No, I&#8217;m talking about a case where the &#8220;client&#8221; is an iPhone (for example) that may not always be connected to a server (for example, a change is made while traveling on a plane).  So, when the sync does occur, the client must know what changed since the last sync.  Thus, my question &#8212; how does it know what changed?  Does it compare the “Last Modified” timestamp to the Last Sync? Does it set a flag at the entity level and then clear those flags after a successful sync? Does it set a flag at the property level and then clear those flags after a successful sync? Does it create a temporary snapshot at the beginning of a sync session and then permanently save that snapshot after the sync completes successfully?  Does it find some other way to identify changes?</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Marcus Zarra</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1426</link>
		<dc:creator>Marcus Zarra</dc:creator>
		<pubDate>Mon, 16 Aug 2010 17:08:51 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1426</guid>
		<description>&lt;p&gt;The truth database is on the same operating system as the application so the client is always connected to the server.&lt;/p&gt;

&lt;p&gt;In addition, both sides keep track of deltas since last sync.&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>The truth database is on the same operating system as the application so the client is always connected to the server.</p>

<p>In addition, both sides keep track of deltas since last sync.</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Ross P</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-1425</link>
		<dc:creator>Ross P</dc:creator>
		<pubDate>Mon, 16 Aug 2010 16:45:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-1425</guid>
		<description>&lt;p&gt;In cases where the clients are NOT always connected to the server, a sync CANNOT take place after each change at a client, but must be done on a delayed basis. In such cases, how does Core Data KNOW that an entity or property has changed? Does it compare the “Last Modified” timestamp to the Last Sync? Does it set a flag at the entity level and then clear those flags after a successful sync? Does it set a flag at the property level and then clear those flags after a successful sync? Does it create a temporary snapshot at the beginning of a sync session and then permanently save that snapshot after the sync completes successfully?&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>In cases where the clients are NOT always connected to the server, a sync CANNOT take place after each change at a client, but must be done on a delayed basis. In such cases, how does Core Data KNOW that an entity or property has changed? Does it compare the “Last Modified” timestamp to the Last Sync? Does it set a flag at the entity level and then clear those flags after a successful sync? Does it set a flag at the property level and then clear those flags after a successful sync? Does it create a temporary snapshot at the beginning of a sync session and then permanently save that snapshot after the sync completes successfully?</p>]]></content:encoded>
	</item>
	<item>
		<title>By: Marcus Zarra</title>
		<link>http://www.cimgf.com/2008/08/27/cocoa-tutorial-sync-services-without-core-data/comment-page-1/#comment-795</link>
		<dc:creator>Marcus Zarra</dc:creator>
		<pubDate>Thu, 28 Aug 2008 18:43:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.cimgf.com/?p=216#comment-795</guid>
		<description>&lt;p&gt;Thanks smorr, glad you liked the article.&lt;/p&gt;

&lt;p&gt;BTW, if any who reads this or any other article and feels the need to respond on Twitter -- DON&#039;T!&lt;/p&gt;

&lt;p&gt;I will not respond to twitter comments about CIMGF.  Put the comments here where they can be preserved and used by the other readers.&lt;/p&gt;

&lt;p&gt;Thanks!&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Thanks smorr, glad you liked the article.</p>

<p>BTW, if any who reads this or any other article and feels the need to respond on Twitter &#8212; DON&#8217;T!</p>

<p>I will not respond to twitter comments about CIMGF.  Put the comments here where they can be preserved and used by the other readers.</p>

<p>Thanks!</p>]]></content:encoded>
	</item>
</channel>
</rss>

