iPhone App: Ne bir API veri almak ayrıştırmak ve daha sonra kullanmak üzere saklamak için?

2 Cevap php

Ben bu yüzden yanlış terminoloji kullanırsanız pardon ya yanlış soru sormak iPhone app geliştirme yeniyim. Temelde, daha sonra için tasarruf ve veri kümesi güncelleştirilmiş olup olmadığını kontrol, bir dataset indirmeden içeren bir App yazmaya çalışıyorum, ama nereden başlayacağımı bilmiyorum.

Ben dataset derken anahtar / değer çiftleri çok boyutlu bir dizi anlamına gelir.

Benim App verileri çekecek bir site oluşturmak olacaktır. REST arka uç veritabanı olarak MySQL kullanarak bir Zend Framework bir uygulama tarafından sunulmakta, bu (çok REST yeni) kullanarak olacak teknoloji olduğunu düşünüyorum.

Yani veri MySQL veritabanında saklanır, ve ben (internet erişimi mevcut olmadığı zaman) sonradan erişilebilir, benim App SQLite veritabanında saklanır varsayıyorum parçaları, indirmek gerekiyor. Benim uygulamanın yaşam döngüsü içinde bir noktada, ben indirdiğiniz veri kümesi en son sürümü olup olmadığını kontrol etmek istiyorum.

Hala hakkında kafam karıştı, bu parçaların bir yeri vardır. Herkes üzerine dokundu alanlarda herhangi / tüm biraz ışık tutmak lütfen. Ben farkında olmalıdır herhangi bir iPhone çerçeve bu süreç daha kolay / hızlı gitmek yapacak var mı?

Teşekkürler!

Update: Belki daha kolay cevap yapmak için bu kadar kırmak gerekir:

  1. Benim API veritabanı ve çıkış XML olarak yanıt veri almak olacağını varsayarak yaşıyorum. Bu iyi / tek seçenek mi?
  2. Benim App, nasıl bir API çağrısı yapabilir?
  3. Nasıl bir API çağrısını (muhtemelen XML) ayrıştırmak ve daha sonra geri alma için saklayabilirsiniz?

2 Cevap

Ben sadece iPhone'lar hizmet edeceğini web hizmetleri yapmak için bulunan bir gerçekten harika teknik, çerçeve için bir Plist kütüphane bulmaktır. Ben genellikle Django kullanmak ve Python yerleşik bir plist kütüphaneye sahiptir. Bu oldukça standart bir XML dosyası daha, bir Plist nesnesine veri açmak anlamına gelir. Bu serileştirilebilen ve sadece standart bir XML dosyası gibi ağ üzerinden gönderilen, ancak dosyayı ayrıştırmak için NSXMLParser kullanmak gerekmez olabilir.

App itibaren, NSData nesnenin yöntemini kullanarak bir API çağrısı yapabilirsiniz:

+ (id)dataWithContentsOfURL:(NSURL *)aURL

Bu yöntem, belirtilen url sizin API adresi URL, içeriği ile bir veri nesnesi yaratacaktır. Daha sonra bir dize içine veri nesnesi açabilirsiniz, bir sözlük ya Plist dosyasında ne olursa olsun kök nesnedir.

Güncellenmesi yönetmek için, genellikle bir su seviyesi yöntemi kullanın. IPhone depolar son veritabanındaki her giriş veya güncelleştirmenin zamanı NSUserDefaults gibi basit bir şey güncelleme ve sunucu saklar o zaman. Api çağrısı üzerine, bir GET veya POST parametresi olarak sunucuyu son güncelleme zaman geçirmek gerekir. Sunucu daha sonra o zamandan bu yana güncellenen ya da girilen şeyler için veritabanını tarayarak, ve telefona sadece bu nesneleri gönderir.

Sadece (GET) veri almak isteyen varsa, REST API çağrısı basitçe genellikle HTML yerine XML döndürür gitmek bir URL. Sizin URL www.site.com / dinlenme / fetchstuff veya www.site.com / dosomethigncool, farketmez olabilir. API "çağırmak" için uygulama için, o URL'ye bağlanmak ve daha sonra sunucudan XML download ne parametreler ediyorum.

Senin app satılık araba bulur diyelim. URL / DİNLENME API www.site.com / dinlenme / araba / findAll olacaktır. Www.site.com/rest/cars/findAll?make=jeep&model=wrangler: app Bu URL'yi çağırır. Sunucu Jeep Wranglers XML olarak biçimlendirilmiş sonuçları döndüren tüm otomobiller için veritabanı aramak olacaktır. App XML sonra bunu ayrıştırmak indirmek istiyorsunuz.

SeismicXML örnek proje göz atın. NSURLConnection REST API bağlanır ve veri (XML) indirir budur. NSXMLParser indirmek XML ayrıştırma yapabilir.