Swift

Swift:NSArray alloc] initWithObjects:

ソートの仕方を調べていたら、initWithObjects:の意味、というか、convenience init(array anArray: [AnyObject])の意味が何となくわかってきました。

convenience initを使って何かしろということではなく、配列は[    ]の中に初期設定できるよ、という意味。

Objective-C: – (instancetype)initWithArray:(NSArray *)anArray

NSArray *aa = [[NSArray alloc] initWithObjects:@”東京”, @”名古屋”, @”大阪”, nil];
NSArray *bb = @[@”東京”, @”名古屋”, @”大阪”];

Swift:convenience init(array anArray: [AnyObject])

var      aa = [“東京”, “名古屋”, “大阪”]

ということは、以前、FileNode *copy = [[FileNode allocWithZone:zone] initWithPath:path];がSwiftで何になるのか想像がつかなかったのですが、もしかすると、単純に次のようなことだったかもしれませ ん。Treeに戻るとき、再チャレンジですね。

FileNode *copy = [[FileNode allocWithZone:zone] initWithPath:path];

var copy:FileNode = FileNode().initWithPath(path) as FileNode・・・NG

var copy:FileNode = FileNode(path:path) as FileNode
var copy:FileNode = FileNode(path:path)

きょう、NSDictionaryのソートを調べていたのですが、解決できませんでした。わかったことは次のことです、多分。

  • NSDictionaryはDictionaryではない。
  • 元々のソートの対象は、NSMutableArrayで、次のようになっていました。

NSSortDescriptor *tempSort = [NSSortDescriptor sortDescriptorWithKey:@”fSort” ascending:YES];
wkArray = [[wkArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:tempSort]]copy];

  • Swiftで次のように書いてみたのですが、コンパイルは通っても結果はダメでした。それは、NSArrayとNSDictionaryの違いからなのでしょうか?それとも、[wkArray]という書き方がまずいのでしょうか?
  • sortedArrayUsingDescriptorsが不適切なのでしょうね。

var descriptor:NSSortDescriptor = NSSortDescriptor(key: “idFirst”, ascending: true)
var sortedResult1: NSArray = [wkArray].sortedArrayUsingDescriptors([descriptor])

Categories: Swift, 技術