Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Swift
+
JSON via WordPress
中島真洋(ナカシマ マサヒロ)
SwiftyJSON で簡単にJSONを扱う
自己紹介
中島真洋(ナカシマ マサヒロ)出身:熊本県
FlipClap Inc.
WEBデザイナー / エンジニア
ブログ:着ぐるみ追い剥ぎペンギン(http://www.kigurumi.asia)
主な使用言語:PHP, JavaScrip...
サーバーとの連携アプリ
iPhone
アプリ
特定のジャンルの
記事情報
WordPress
記事情報
RSS(XML)
WP REST API
XMLじゃなくて、JSONを使いたい!
今後のWordPressに組み込まれる予定
現在はプラグインとして配布中
Docs : http://wp-api.org/
Data : https://github.com/W...
簡単にJSONで情報が取得できる
iPhone
アプリ
WordPress
記事情報
JSON
ex)
記事情報 http://ドメイン.com/wp-json/posts/
カテゴリー情報 http://ドメイン.com/wp-json/ta...
表示したい情報
WordPress
JSON
tableView
JSONの中身
[
{
"ID":44367,
"title":"u30e9u30fcu30e1u30f3u5c4bu306eu8b0eu30ebu30fcu30ebu591au30",
"status":"publish",
"type":"...
swiftで普通に書くと
//セルの内容を表示
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> U...
もっと簡単にJSONが使いたい
SwiftyJSON
https://github.com/SwiftyJSON/SwiftyJSON
参考:
http://dev.classmethod.jp/smartphone/iphone/swifty...
インストール
ダウンロードして、「SwiftyJSON.swift」を追加するだけ
ここにドラッグでOK
SwiftyJSONを使うと
{
"ID":44367,
"featured_image":{
"title":"AAAAA",
},
},
{
"ID":44368,
"featured_image":{
title":"BBBB",
},
...
JSONだと
// var entries = NSArray()
↓
var entries: JSON = JSON.nullJSON
//var dict = NSJSONSerialization.JSONObjectWithData(...
JSONだと
// //サムネイル
// if let featuredImage = entry["featured_image"] as? NSDictionary {
// if let attachmentMeta = featured...
おわり
・JSONを扱うなら、SwiftyJSONが便利
Upcoming SlideShare
Loading in …5
×

Swift + JSON via WordPress

1,467 views

Published on

Published in: Devices & Hardware
  • Be the first to comment

Swift + JSON via WordPress

  1. 1. Swift + JSON via WordPress 中島真洋(ナカシマ マサヒロ) SwiftyJSON で簡単にJSONを扱う
  2. 2. 自己紹介 中島真洋(ナカシマ マサヒロ)出身:熊本県 FlipClap Inc. WEBデザイナー / エンジニア ブログ:着ぐるみ追い剥ぎペンギン(http://www.kigurumi.asia) 主な使用言語:PHP, JavaScript アプリ開発経験:なし
  3. 3. サーバーとの連携アプリ iPhone アプリ 特定のジャンルの 記事情報 WordPress 記事情報 RSS(XML)
  4. 4. WP REST API XMLじゃなくて、JSONを使いたい! 今後のWordPressに組み込まれる予定 現在はプラグインとして配布中 Docs : http://wp-api.org/ Data : https://github.com/WP-API/WP-API
  5. 5. 簡単にJSONで情報が取得できる iPhone アプリ WordPress 記事情報 JSON ex) 記事情報 http://ドメイン.com/wp-json/posts/ カテゴリー情報 http://ドメイン.com/wp-json/taxonomies/category/terms/1
  6. 6. 表示したい情報 WordPress JSON tableView
  7. 7. JSONの中身 [ { "ID":44367, "title":"u30e9u30fcu30e1u30f3u5c4bu306eu8b0eu30ebu30fcu30ebu591au30", "status":"publish", "type":"post", content : ...", //省略 "featured_image":{ "ID":44368, "title":"", "status":"inherit", //省略 "attachment_meta":{ "width":560, "height":420, "file":"2015/01/9b3e06a5-s.jpg", "sizes":{ //省略 "medium":{ "file":"9b3e06a5-s-300x225.jpg", "width":300, "height":225, "mime-type":"image/jpeg", //↓ここ "url":"http://navi-blog.com/wp-content/uploads/2015/01/9b3e06a5-s-300x225.jpg" } } //...
  8. 8. swiftで普通に書くと //セルの内容を表示 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { //セルを取得 //var cell:UITableViewCell var cell = tableView.dequeueReusableCellWithIdentifier("news") as UITableViewCell //エントリーを取得 var entry = entries[indexPath.row] as NSDictionary //テキスト更新 var titleLabel = cell.viewWithTag(1) as UILabel titleLabel.text = entry["title"] as? String //サムネイル if let featuredImage = entry["featured_image"] as? NSDictionary { if let attachmentMeta = featuredImage["attachment_meta"] as? NSDictionary { if let attachmentSizes = attachmentMeta["sizes"] as? NSDictionary { if let attachmentMedium = attachmentSizes["medium"] as? NSDictionary { // イメージビューを取得して、画像を設定する var fileName = attachmentMedium["url"] as? String var fileUrl = NSURL(string: fileName!); var err: NSError?; var imageData :NSData = NSData(contentsOfURL: fileUrl!,options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)! var img = UIImage(data: imageData) var imageView = cell.viewWithTag(2) as UIImageView imageView.image = img } } } } return cell }
  9. 9. もっと簡単にJSONが使いたい SwiftyJSON https://github.com/SwiftyJSON/SwiftyJSON 参考: http://dev.classmethod.jp/smartphone/iphone/swiftyjson/ http://qiita.com/g08m11/items/c3746cbdbdb4c7b71607
  10. 10. インストール ダウンロードして、「SwiftyJSON.swift」を追加するだけ ここにドラッグでOK
  11. 11. SwiftyJSONを使うと { "ID":44367, "featured_image":{ "title":"AAAAA", }, }, { "ID":44368, "featured_image":{ title":"BBBB", }, } var entry = entries[indexPath.row] as NSDictionary if let featuredImage = entry["featured_image"] as? NSDictionary { var text = featuredImage["title"] as? String } var text = entries[indexPath.row]["featured_image"]["title"].string ↓これが ↓こう書ける entries.json
  12. 12. JSONだと // var entries = NSArray() ↓ var entries: JSON = JSON.nullJSON //var dict = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSArray //self.entries = dict ↓ self.entries = JSON(data: data) // //エントリーを取得 // var entry = entries[indexPath.row] as NSDictionary // // //テキスト更新 // var titleLabel = cell.viewWithTag(1) as UILabel // titleLabel.text = entry["title"] as? String ↓ var titleLabel = cell.viewWithTag(1) as UILabel titleLabel.text = entries[indexPath.row]["title"].string
  13. 13. JSONだと // //サムネイル // if let featuredImage = entry["featured_image"] as? NSDictionary { // if let attachmentMeta = featuredImage["attachment_meta"] as? NSDictionary { // if let attachmentSizes = attachmentMeta["sizes"] as? NSDictionary { // if let attachmentMedium = attachmentSizes["medium"] as? NSDictionary { // // // イメージビューを取得して、画像を設定する // var fileName = attachmentMedium["url"] as? String // var fileUrl = NSURL(string: fileName!); // var err: NSError?; // var imageData :NSData = NSData(contentsOfURL: fileUrl!,options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &e // // var img = UIImage(data: imageData) // var imageView = cell.viewWithTag(2) as UIImageView // imageView.image = img // // } // } // } // } // イメージビューを取得して、サムネイル画像を設定する var fileName:String? = entries[indexPath.row]["featured_image"]["attachment_meta"]["sizes"]["medium"]["url"].string if fileName != nil { var fileUrl = NSURL(string: fileName!); var err: NSError?; var imageData :NSData = NSData(contentsOfURL: fileUrl!,options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)!; var img = UIImage(data: imageData) var imageView = cell.viewWithTag(4) as UIImageView imageView.image = img }
  14. 14. おわり ・JSONを扱うなら、SwiftyJSONが便利

×