iPhoneアプリ作成(8) 配列の保存と読み込みについて

「こんなことできるんだ。」ちょっと感動しました。

なんと、「配列をXMLファイルに保存・復元」できる。

知らなかったー ショック!!

配列は、Array,Dictionaryの混在で複数の階層でも大丈夫。
テストでは4階層の配列をためしてみた。

delphiやその他の言語で、こんなことできたのかな?????????? 

正直、これまでデータベースばかり扱ってたので、配列の保存は試したことがなかった 

こんな簡単に、保存と復元ができると、いろいろと応用がきくかも...

◆注意点:
delphiでよくやるパターンで、オリジナルのクラスを作って、配列に追加するようなことをやると、この保存・読み込みはできません。
あくまで、ArrayとDictionaryの組み合わせで構成されている配列(コレクション)だけをサポートしてるようです。

◆テストソース

//***************************************************
//? Array - Array - dic - Array テスト
//***************************************************

#import <Foundation/Foundation.h>

? int main (int argc, constchar * argv[]) {
? NSAutoreleasePool * pool = [[NSAutoreleasePoolalloc] init];

? //init 空の配列を生成
? NSMutableArray *array0 = [NSMutableArray array];
? NSMutableArray *array1 = [NSMutableArray array];
? NSMutableDictionary *dic1 = [NSMutableDictionary dictionary];
? NSMutableArray *array2 = [NSMutableArray array];
 NSMutableArray *array3 = [NSMutableArray array];
? //add 配列に値を設定

? [dic1 setObject:@"test1" forKey:@"key1"];
? [array2 addObject:@"test2"];
? [dic1 setObject:array2?? forKey:@"key2"];
? [array1 addObject:dic1];
? [array0 addObject:array1];

? NSLog(@"array0 = %@",array0);

? //save 保存
? BOOL ret;
? NSString *path = @"/Users/administrator/Documents/test.plist";
? ret =[array0 writeToFile:path atomically:YES];

? //load 読み込み
? array3 = [NSArray arrayWithContentsOfFile:path];

? NSLog(@"array3 = %@",array3);

? [pool drain];
? return0;
}

◆結果

2011-03-09 10:35:25.195 CollectionTest03[29286:a0f] array0 = (
??????? (
??????????????? {
??????????? key1 = test1;
??????????? key2 =???????????? (
??????????????? test2
??????????? );
??????? }
??? )
)
2011-03-09 10:35:25.208 CollectionTest03[29286:a0f] array3 = (
??????? (
??????????????? {
??????????? key1 = test1;
??????????? key2 =???????????? (
??????????????? test2
??????????? );
??????? }
??? )
)

◆出力されたplistファイル(XMLファイル

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
???? <array>
????????? <dict>
?????????????? <key>key1</key>
?????????????? <string>test1</string>
?????????????? <key>key2</key>
?????????????? <array>
??????????????????? <string>test2</string>
?????????????? </array>
????????? </dict>
???? </array>
</array>
</plist>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です