gpt4 book ai didi

macos - NSIndexSet.enumerateIndexesUsingBlock 使用 Swift 闭包

转载 作者:可可西里 更新时间:2023-11-01 00:37:36 25 4
gpt4 key购买 nike

我正在编写一种将数据从 TableView 复制到粘贴板的方法,但是如果选择了任何行,它应该专门只复制所选行中的数据,因此我需要遍历索引集 ...

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;
}

我在将方法签名解释为应该如何编写闭包代码时遇到了一些麻烦。我收到的错误消息也不是特别清楚(无法使用类型为“((_, _) -> Int)”的参数列表调用“enumerateIndexesUsingBlock”)。有人可以帮我吗?

编辑:

工作方式:

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;
}

最佳答案

在多行闭包中,您可能应该显式地编写参数列表和返回值。你可以这样写:

indexSet.enumerateIndexesUsingBlock { (index, stop) -> Void in
println(index)
}

关于macos - NSIndexSet.enumerateIndexesUsingBlock 使用 Swift 闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30523588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com