Return-Path: X-Original-To: apmail-couchdb-user-archive@www.apache.org Delivered-To: apmail-couchdb-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 8673E6A8F for ; Sat, 23 Jul 2011 20:27:16 +0000 (UTC) Received: (qmail 64507 invoked by uid 500); 23 Jul 2011 20:27:14 -0000 Delivered-To: apmail-couchdb-user-archive@couchdb.apache.org Received: (qmail 64410 invoked by uid 500); 23 Jul 2011 20:27:13 -0000 Mailing-List: contact user-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@couchdb.apache.org Delivered-To: mailing list user@couchdb.apache.org Received: (qmail 64402 invoked by uid 99); 23 Jul 2011 20:27:13 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 23 Jul 2011 20:27:13 +0000 X-ASF-Spam-Status: No, hits=2.2 required=5.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of jens@couchbase.com designates 206.225.164.28 as permitted sender) Received: from [206.225.164.28] (HELO EXHUB020-1.exch020.serverdata.net) (206.225.164.28) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 23 Jul 2011 20:27:06 +0000 Received: from EXVMBX020-1.exch020.serverdata.net ([169.254.4.186]) by EXHUB020-1.exch020.serverdata.net ([206.225.164.28]) with mapi; Sat, 23 Jul 2011 13:26:45 -0700 From: Jens Alfke To: "user@couchdb.apache.org" Date: Sat, 23 Jul 2011 13:26:43 -0700 Subject: ANN: CouchCocoa framework (Objective-C API) Thread-Topic: CouchCocoa framework (Objective-C API) Thread-Index: AcxJdtbHyNLI13mHQHaQqKHbtnhImg== Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: multipart/alternative; boundary="_000_DCAA3090C34841ED97F8FC5B40646203couchbasecom_" MIME-Version: 1.0 X-Virus-Checked: Checked by ClamAV on apache.org --_000_DCAA3090C34841ED97F8FC5B40646203couchbasecom_ Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: quoted-printable CouchCocoa is a new Objective-C API for CouchDB on iOS and Mac OS. It=92s = =93medium-level=94, in that: =95 It doesn't require knowledge of the HTTP API, only of CouchDB's archite= cture, so you won't have to remember special paths or URL query parameters. =95 But it doesn't provide a full-fledged model layer like CoreData or Acti= veRecord. You're still working with CouchDB documents as, basically, NSDict= ionaries, and you'll need your own mapping between those and your app's obj= ect model. =95 It usually provides both high-level and low-level ways to do the same t= hing. So you can call CouchDocument=92s -resolveConflictingRevisions: metho= d, or if you=92re a REST jockey you can assemble your own JSON data and cal= l -POST: yourself. A key feature is that it provides document change notifications, driven by = the _changes feed, and filters out local changes made by your app from exte= rnal ones made by other apps or by replication. Thus you can easily detect = when external changes are made, and check for conflicts and update your UI. Speaking of conflicts, the API provides easy access to a document=92s revis= ion history (via CouchRevision objects) and lets you compare the conflictin= g revisions and choose which properties should be in the resolved document. There are some experimental classes (part of the Mac demo apps) that interf= ace CouchDB views to Cocoa bindings, which lets you do a lot of the work of= building a Mac app entirely in Interface Builder, with very little coding.= (Unfortunately iOS doesn=92t support bindings yet.) [We have an iOS demo app using CouchCocoa almost ready, a modified version = of the one in the iOS-Couchbase repo. Chris will have it up ASAP.] The code is roughly at alpha level, by which I mean that it=92s working, an= d suitable for people to start development with; but on the other hand you = should expect bugs and limitations, and future API changes. I=92m excited to be developing this as part of my day job at Couchbase. Thi= s open-source framework will be a supported part of the Mobile Couchbase pr= oduct. But we=92re not positioning it as the One True Way to use Couchbase = on iOS and Mac OS, any more than CouchRest is the One True Way on Ruby. You= can of course still use Trundle, or roll your own interface on top of NSUR= LConnection. But we want to make CouchCocoa easy as powerful and easy to us= e as we can, to help you build amazing applications. And of course, it=92s = open source, and we welcome your contributions to it. Repo & source code: https://github.com/couchbaselabs/CouchCocoa Example snippets: https://github.com/couchbaselabs/CouchCocoa/wiki/Example-= Snippets API docs: http://couchbaselabs.github.com/CouchCocoa/docs/ =97Jens --_000_DCAA3090C34841ED97F8FC5B40646203couchbasecom_--