Delphi iOS Tips (4): iOSApi.FoundationでPlistを読み書きしてみた
iOSapi.FoundationとはObjective-CのNSクラスをラッピングしているようだ
ちょっと癖があるが、NSクラスを使えるかも…
・Objective-Cで文字列を@”test1″と書くところを、Delphi iOSではNSStr(‘test1’)と表現するようだ
但し、配列にオブジェクトを追加するときはPointer型を指定してやる必要があり、NSStr(‘test1’).initのようにinitを追加する
最後のinitはNSStringをpointer型に変換してくれるらしい
・NSLogはクラッシュはしないものの、ログが出力されたかは確認できなかった。
(参考)Thread: Help rewrite Objective-C procedure to Delphi
https://newsgroups.embarcadero.com/thread.jspa;jsessionid=23076DC87CECDB371437AD12BCB5C327?messageID=452204
unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, iOSapi.Foundation; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { private 宣言 } public { public 宣言 } end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.FormCreate(Sender: TObject); var array0, array1, array2, array3: NSMutableArray; dic1: NSMutableDictionary; str, path: NSString; ret: boolean; begin /// /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); array0 := TNSMutableArray.Create; array1 := TNSMutableArray.Create; array2 := TNSMutableArray.Create; array3 := TNSMutableArray.Create; dic1 := TNSMutableDictionary.Create; dic1.setObject(NSStr('test1').init, NSStr('key1').init); array2.addObject(NSStr('test2').init); dic1.setObject(array2.init, NSStr('key2').init); array1.addObject(dic1.init); array0.addObject(array1.init); NSLog(NSStr('array0 = %@').init, array0.init); path := NSStr('/Users/administrator/Documents/test.plist'); ret := array0.writeToFile(path, true); array3.initWithContentsOfFile(path); NSLog(NSStr('array3 = %@').init, array3.init); end; end.