2011-01-11 12 views
0

私はuitableviewsに関するいくつかのチュートリアルを行ってきました。NSMutableArrayから.plistへの変更

指示通り

listOfItems = [[NSMutableArray alloc] init]; 

NSArray *countriesToLiveInArray = [NSArray arrayWithObjects:@"Iceland", @"Greenland", @"Switzerland", @"Norway", @"New Zealand", @"Greece", @"Rome", @"Ireland", nil]; 
NSDictionary *countriesToLiveInDict = [NSDictionary dictionaryWithObject:countriesToLiveInArray forKey:@"Countries"]; 

NSArray *countriesLivedInArray = [NSArray arrayWithObjects:@"India", @"U.S.A", nil]; 
NSDictionary *countriesLivedInDict = [NSDictionary dictionaryWithObject:countriesLivedInArray forKey:@"Countries"]; 

[listOfItems addObject:countriesToLiveInDict]; 
[listOfItems addObject:countriesLivedInDict]; 

の下にこれは区分され、テーブルビューを作成するように私は「listofitems」内に、すべての情報を入れています。私はそれをRootViewController.mにすべて入力するのではなく、.plistに変更する方法を知りたいと思います。私はまだそれがセクション化されたテーブルビューにあることが好きです。

このNSMutableArray、NSArray、NSDictionaryからplistに変更する簡単な方法はありますか?

答えて

0

このwriteToFile:atomically:ための簡単な方法があります:

[listOfItems writeToFile:destinationPath atomically:YES]; 

これは、自動的に内部のplistのファイルを作成します。

0

このソートは、あなたがplistで望むもの、それに何を入れるかによって異なります。エントリとコンテンツがすべてCFPropertyListタイプ(CFString、CFDate、CFData、CFDictionary、CFArray、CFNumber ...)の場合は、CFPropertyListCreateDeepCopyのようなもので作成してください。

変換できないカスタムオブジェクト(独自のNSObjectサブクラスなど)がある場合は、ココアのアーカイブトピックをご覧ください。

+0

あなたも、その後にインポートするために、私はplistの中にまったく同じ値を希望NSPropertyListSerialization – justin

+0

を使用することを更新しているされていますファイル。同じ結果を生み出すこと。 –

+0

@Kurt Laneもちろん、CFPropertyListでサポートされているタイプのドキュメントを参照してください(そのリストにはCFBooleanRefが追加されています。これらのタイプはフリーダイヤルです)。したがって、コレクション・オブジェクトをplistに入れると、コレクション内のすべての項目もサポートされているタイプの1つでなければなりません。このリストを超えてオブジェクト表現をアーカイブする必要がある場合は、これらのタイプのみを使用してアーカイブ/アーカイブをサポートするか、より精巧なタイプのオブジェクトをアーカイブするためにFoundationのアーカイブ機能を使用する必要があります。あなたの例(配列、辞書、文字列)のすべてが(cont) – justin

0

これは、簡単な関数のエンド聞くのrelization

この関数はNSArrayの

- (void) WriteRecordToFile:(NSMutableDictionary*)countDict { 
    // Here to write to file 
    databasePathCallCount = @"plist path"; 
    NSMutableArray *countArray = [NSMutableArray arrayWithContentsOfFile:databasePathCallCount]; 
    if(countArray) 
     [countArray addObject:countDict]; 
    [countArray writeToFile:databasePathCallCount atomically:NO]; 
} 
関連する問題