テーブルビューからペーストボードにデータをコピーする方法を書いていますが、行が選択されている場合は、選択された行からデータのみをコピーする必要があるため、インデックスセットを反復処理する必要があります...
func createExportText(fromArrayController:NSArrayController) -> String
{
var indexSet = fromArrayController.selectionIndexes;
/* None were selected, so process them all! */
if (indexSet.count == 0)
{
indexSet = NSIndexSet(indexesInRange: NSMakeRange(0, fromArrayController.arrangedObjects.count));
}
var rows = "";
indexSet.enumerateIndexesUsingBlock
{
// What code goes here?
}
return rows;
}
メソッド シグネチャを解釈して、クロージャ コードをどのように記述すべきかについて、少し問題があります。表示されるエラー メッセージも特に明確ではありません ( Cannot invoke 'enumerateIndexesUsingBlock' with an argument list of type '((_, _) -> Int)'
)。ここで誰か助けてくれませんか?
編集:
作業方法:
func createExportText(fromArrayController:NSArrayController) -> String
{
var rows = "";
var indexSet = fromArrayController.selectionIndexes;
let objects = (fromArrayController.arrangedObjects as! NSArray);
/* No rows were selected, so process them all! */
if (indexSet.count == 0)
{
indexSet = NSIndexSet(indexesInRange: NSMakeRange(0, objects.count));
}
indexSet.enumerateIndexesUsingBlock
{
(i, stop) -> Void in
let obj:AnyObject = objects[i];
let str = obj.valueForKey("string") as! String;
rows += "\(str)";
if (i < indexSet.lastIndex) { rows += "\n"; }
}
return rows;
}