読者です 読者をやめる 読者になる 読者になる

KOYAMA Yoshiaki のブログ

プログラミングについての試行錯誤をつらつら書き溜めていきます。

米Apple、アンテナ問題の記者会見、Xcode オーガナイザ による Application Data の管理、iTunes のファイル共有

Apple、アンテナ問題の記者会見のビデオを公開

アップル - QuickTime - 7月16日の記者会見
http://www.apple.com/jp/apple-events/july-2010/

アップル - スマートフォンのアンテナ性能
http://www.apple.com/jp/antenna/

アップル - アンテナ設計・試験室
http://www.apple.com/jp/antenna/testing-lab.html

個人的な意見ですが、iPhone 4 の外部アンテナが剥き出しで目視できることが問題なんだと思います。いろいろなウェブサイトから判断すると、性能的には欠陥というほどではないような気がします。

Statement by Apple on White iPhone 4
http://www.apple.com/pr/library/2010/07/23iphonestatement.html
アップル - iPhone 4 - ケースプログラム
http://www.apple.com/jp/iphone/case-program/

iPhone 4 ホワイト モデル発売が延期になったようですね!
2010年9月30日までに iPhone 4 を購入した方への iPhone 4 Bumper、または特定の他社製ケース無償配布の受付も始まったようです。


前回紹介したように iPhoneRSS リーダー iYKRSS を iPad に移植しました。

iPad Programming Guide: Starting Your Project
http://developer.apple.com/iphone/library/documentation/General/Conceptual/iPadProgrammingGuide/StartingYourProject/StartingYourProject.html#//apple_ref/doc/uid/TP40009370-CH9-SW3

▼Creating a Universal Application
	Adding Runtime Checks for Newer Symbols
	Using Runtime Checks to Create Conditional Code Paths

上記ページを参考にして iPhoneiPad 両方で動作する Universal Application を作成しようと思ったのですが、ソースが複雑になりそうだったので、iPhone 用 iYKRSS を iPad 用に iYKRSSHD というプロジェクト名で新規作成しました。

iPad Programming Guide: Views and View Controllers
http://developer.apple.com/iphone/library/documentation/General/Conceptual/iPadProgrammingGuide/UserInterface/UserInterface.html#//apple_ref/doc/uid/TP40009370-CH3-SW7

▼Views and View Controllers
	▼Using Popovers to Display Content


上記ページを参考に popover を使用しました。一例が下図です。




ModalView を中央に表示するのに UIViewController の modalPresentationStyle に UIModalPresentationFormSheet を設定し、下記ソースのように利用しました。

- (IBAction)toolbarItemAddTapped:(id)sender
{	
	EditController *content;
	
	if (self.gEditController == nil) {
		content = [[[EditController alloc] initWithNibName:@"EditController" bundle:nil] autorelease];	
		content.gRootController = self;
		content.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
		content.modalPresentationStyle = UIModalPresentationFormSheet;
//		content.modalPresentationStyle = UIModalPresentationPageSheet;

		self.gEditController = content;
	}	
	
	[giYKRSSHDViewController presentModalViewController:gEditController animated:YES];
 }

UIModalPresentationFormSheet の実行結果が下図です。




他の部分は iPhoneRSS リーダー iYKRSS とほとんど同じなので、難なく作成することができました。


RSS リーダーに登録したフィードなどのデータをファイルに保存するには、plist、NSKeyedArchiver、CoreData の3通りあります。

拙作 iYKRSS、iYKRSSHDでは CoreData を使うほど本格的なデータベースは必要ないし、plist を使うほど単純ではないので、NSKeyedArchiver を利用しています。

iYKRSS、iYKRSSHD で保存されるデータ構造は同一で同じファイル名 RSSArchive.iYKRSS です。ファイル RSSArchive.iYKRSS は、各々アプリケーションごとに作成される 'アプリケーション' フォルダの Documents フォルダに保存されています。

  • plist
Property List Programming Guide: Introduction to Property Lists
http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/PropertyLists/Introduction/Introduction.html#//apple_ref/doc/uid/10000048i
  • NSKeyedArchiver
Archives and Serializations Programming Guide: Introduction
http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/Archiving/Archiving.html#//apple_ref/doc/uid/10000047i
  • CoreData
Core Data Programming Guide: Introduction to Core Data Programming Guide
http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html#//apple_ref/doc/uid/TP40001075


iPhone 用 iYKRSS の RSS フィードデータファイル RSSArchive.iYKRSS を iPad 用 iYKRSSHD の Document フォルダに移動すれば iYKRSS の RSS フィードを iYKRSSHD で引き継ぐことができ便利です。iYKRSSHD 上で最初からフィードの URL を入力する必要もありません。


幸いにも Xcode でビルドしてデバイスにインストールしたアプリケーションの Application Data (Documents フォルダのデータも含む) は、Xcode のオーガナイザを使って読み書きすることができます。



オーガナイザは Xcode のメニュー(上図) 'ウインドウ/オーガナイザ' (下図) で開くことができます。


iOS Development Guide: Running Applications
http://developer.apple.com/iphone/library/documentation/Xcode/Conceptual/iphone_development/120-Running_Applications/running_applications.html#//apple_ref/doc/uid/TP40007959-CH6-SW4

▼Running Applications
	Managing Application Data

上記URL が参考になります。




簡単に説明すると iPhoneiPad などのデバイスを USB で Mac に接続し、 Xcode のオーガナイザを開き、デバイス名をクリックします。'Summary タブ/ Applications' のダウンロードしたいアプリを選び、三角を開くと 'Application Data' という名前が表示されます。右側にあらわれたダウンロードボタン(上図の赤枠部分)をクリックして保存してください。Finder 上にフォルダが作成されます。(下図参照) Documents フォルダに RSSArchive.iYKRSS を見つけることができます。






データを元に戻した時はダウンロードしてできたフォルダの中のデータを変更して、オーガナイザのダウンロードしたいアプリ名にフォルダをドラッグ・ドロップ (下図参照)することで変更できます。即ちファイルなどのデータを iPhoneiPad に書き込むことができます。




オーガナイザを使わずに iTunes のファイル共有を使って Documents フォルダのデータを読み書きすることもできます。

iOS Application Programming Guide: Implementing Standard Application Behaviors
http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StandardBehaviors/StandardBehaviors.html#//apple_ref/doc/uid/TP40007072-CH4-SW10

▼ Implementing Standard Application Behaviors
	▼ Files and the File System
	    Sharing Files with the User

上記 URL が参考になります。


iTunes のファイル共有に Documents フォルダを表示させたい場合は、info.plist に UIFileSharingEnabled キー Boolean 型 YES を追加するだけです。



UIFileSharingEnabled キーは、メニュー '表示/Property List Type/Default File for Type' で None を選ぶと入力しやすいと思います。



ただし、注意する必要があります。UIFileSharingEnabled を追加する前に、デバイス iPhoneiPad 上にアプリケーションがあると、ビルドしてインストールするだけでは、iTunes 上のファイル共有に表示されません。デバイスからアプリケーションを一度、削除して再インストールすると iTunes 上で同期した後、ファイル共有に表示されます。



上図を例にすると、iTunes 上のファイル共有/App から iYKRSSHD を選択すると Documnets フォルダにあるすべてのファイルが表示されます。この場合、RSSArchive.iYKRSS という名前のファイルが一つあります。ファイル RSSArchive.iYKRSS をウインドウの外にドラッグ・ドロップすればファイルを取り出すことができます。逆に Finder からファイルを iYKRSSHDD の書類と表示されているテーブルにドラッグ・ドロップすると Documents フォルダに書き込むことができます。