Swift

Swift: イニシャライズ?

問題がいくつかあり、解決できたものと迂回せざるを得ないものが出てきました。

まず、イニシャライズについてです。

  • structはinit { }で初期値を設定します。これは確認事項で、問題ではありません。
    しかし、そのあと、classの下の変数に初期値を設定するのにinitを使ったら、ここから混乱し、収拾がつかなくなってしまったので、一旦、これはやめることにしました。
  • 問題が起きたのは、単純な話、配列の初期化です。サンプルプログラムでは、var trTreeSavedPath:[String]   = []と書いて問題がなかったのに、ループするようになりました。次のように修正したらOKになりました。

var trTreeSavedPath:[String]   = [String]()
var trIndex4wkArray:[Int]       = [Int]()
var wkArray:[NSDictionary]      = [NSDictionary]()

  • Initialization(初期化)を参考にしましたが、正直言って、自分のレベルが低いためか、よく理解できませんでした。

    もうひとつ、これはなぜそうなるのか、問題の原因が不明なのですが、サンプルプログラムではOKだったものがNGになりました。単なるエンコードの配列です。

let encodeTable:[UInt] = [NSUTF8StringEncoding,
        NSShiftJISStringEncoding, 
        NSJapaneseEUCStringEncoding]

  • これには時間をかけられないので、配列やめ、直接コンスタントを使うようしました。

それで、再び、windowsが表示されるようになりました。

NSTreeControllerのロジックを書いてあるFileNodeに制御が渡らないので、調べています。Objective-Cでは次のコードになります。

– (void)applicationDidFinishLaunching:(NSNotification *)aNotification {  
    [leftOfTable  setDataCell:[CustomCell new]];  
    NSString *wFilePath = [NSHomeDirectory() stringByAppendingFormat:@”/Desktop/MesaClip”];
    self.rootPath = [[FileNode alloc] initWithPath:wFilePath]; 

Categories: Swift, 技術