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.

スクリーンショット 2013-08-16 19.56.38

コメントを残す

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