SIHOのプログラミングわーくワク

興味の赴くままに勉強してたら、読み書きできる言語は9個になりました。他にもいくつか気になる言語があったりなかったり?  まだまだ続く、楽しいお仕事わーくワク♪

  • « 
  • 10 
  • 11 
  • 12 
  • 13 
  • 14 
  • 15 
  • 16 
  • 17 
  • 18 
  • 19 
  • 20 
  • 21 
  • 22 
  • 23 
  • 24 
  • 25 
  • 26 
  • 27 
  • 28 
  • 29 
  • 30 
  • 31 
  • »

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

設定やデータをファイルに保存する方法アレコレ

2010.09.18 (Sat)

アプリの環境設定やブックマークのデータを保存するには何らかの形でファイルに書き出さなくちゃいけない。
そんな方法があるのかと調べたり、教えてもらったりした。
予想に反していろいろな方法があった。
保存するデータのの形式やボリュームに合わせてどの方法を採用するのかは変わりますが、コレだけ選択肢があるのはいいことです。

■ユーザーデフォルトを使う
参考サイト:備忘録:NSUserDefaultの使い方CommentsAdd Star
http://d.hatena.ne.jp/masatwitte/20100228/1267362218
簡単な設定項目なら、これで十分ですね。
■プレーンなテキストファイルを保存する
これでテキストデータを読み込んだら、componentsSeparatedByString:メソッドを使って整形するといいのかも?ひと手間かかるけど、基本なので覚えたい。

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
//iPhoneのホームディレクトリを取得。
NSString * path = NSHomeDirectory();
NSLog(@"HomeDirectory : %@",path);
//バックアップ対象になるディレクトリ内へのパスとファイル名をくっつける
path = [NSString stringWithFormat:@"%@/Library/Preferences/config.txt",path];
NSLog(@"HomeDirectory : %@",path);

//ファイルに書き出すテキストを指定
NSString *str = [NSString stringWithFormat:@"my Text Data."];

//正しく処理が行われたかのチェック&ファイルへのデータ書き込み。
//ファイルがないときは自動的に作るし、あるときは上書きするよ。エンコードはUTF8ね。
BOOL b;
b = [str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:NULL];
NSLog(@"Successed : %d",b);
[pool drain];

//該当ディレクトリのファイルを読み込む。
str = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
NSLog(@"str : %@",str);


■インスタンスをアーカイブにしてdatファイルで保存する
参考サイト:独自のオブジェクトをシリアライズできるようにする。
http://d.hatena.ne.jp/Yudoufu/20091220/1261325317
これは、とてつもなく何でも使えそうで良いけど、ちょっと使い方がややこしい感じ?

■配列をXMLファイルで保存する。
参考サイト:配列オブジェクトをファイルに保存する
http://ameblo.jp/iphone416/entry-10250595079.html
これも、配列を直接XMLに保存できるので楽そう。
[2010/09/28 追記]
■XMLで保存する方法。テキストエディタでも開けて書き込みが確認しやすい。
読み込み時:
NSString * homepath = NSHomeDirectory();
homepath = [NSString stringWithFormat:@"%@/Library/Preferences/bookmark.xml",homepath];
NSMutableData *theData = [NSMutableData dataWithContentsOfFile:homepath];
NSString *myString;
NSMutableArray*myArray = (NSMutableArray*)[NSPropertyListSerialization propertyListFromData:theData mutabilityOption:NSPropertyListMutableContainers format:NULL errorDescription:&myString];

保存時:
[myArray writeToFile:homepath atomically:YES];

■datで保存する方法。バイナリ(?)になるのでエディタでは開けない。
読み込み時:
NSString * homepath = NSHomeDirectory();
homepath = [NSString stringWithFormat:@"%@/Library/Preferences/bookmark.xml",homepath];
NSData *data = [NSData dataWithContentsOfFile:homepath];
NSMutableArray*myArray =[NSKeyedUnarchiver unarchiveObjectWithData:data];

保存時:
[NSKeyedArchiver archiveRootObject:bookMarks toFile:homepath];

XMLの呼び出しは、TBXML(XMLの読み込みの記事参照)が高速で良い感じ。サンプルもあるしコードはそれほど複雑じゃないので、実装しやすいかも。

コメント

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

Re: オブジェクトC

> 現在、iPhoneアプリの開発をしているのですが、TextFiledに自分自身で打った文字列を「登録」ボタンを押すと保管し、後から一覧にて表示させたいと考えているのですが、配列を使ったやり方がわかりません。
> 教えていただけないでしょうか?

配列をXML保存できるのは数値だけだったと思いますよ。
文字列の保存なら別の方法を使うようにした方がいいです。

このiphoneにファイル保存する機能ってactionscriptにもありますでしょうか?

Re: タイトルなし

> このiphoneにファイル保存する機能ってactionscriptにもありますでしょうか?

AIR用のクラスならあるかもしれないですね。
ただ、残念ながら私はAIRでの開発経験は少ないのでちょっと分かりかねます。

コメントの投稿

トラックバック

この記事のトラックバックURL

 | HOME | 

プロフィール

siho_prof

SIHO
しほ

Twitter:
SIHO_o

viva mambo, inc.
iPhone&iPad / Flash / Kinect
使用言語:Objective-C, ActionScript 3.0, Javascript, Lua, PHP, C#, C, C++, WSH。
F-site staff

Solar System Simulator 広報

Web,スマートフォン、Desktopを問わず、アプリ制作が好物。執筆は必要に応じて。お仕事くださいまし。

サイネージ:ガンダムフロント東京・キャラクターフォトスポット設計(2012/4~常設)

アトラクション:富士急ハイランド 戦国BASARA ゲーム設計&プログラミング(2010/7-2012/4にて常設展示)

イントラシステム:「某メーカー研究所KJ法システム」DB,Flash,PHPを含むソリューション設計&DB構築、「美術系専門学校の生徒管理システム」iPadクライアントを含むソリューション設計&DB構築

iPhone/iPadアプリ:某球団試合速報アプリ、『魂を熱くさせる 宇宙飛行士100の言葉』『Mitaka Gallery -てのひら宇宙-』

書籍同梱ソフト:『4次元デジタル宇宙紀行Mitaka』『DVD-ROM&図解 動く! 深海生物図鑑』『DVD-ROM&図解 ハッブル望遠鏡で見る宇宙の驚異』

著書:『世界一わかりやすい Windows 7』『世界一わかりやすい Flash CS3』

検索フォーム

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。