在Swift中使用sortedArrayUsingSelector

时间:2015-01-07 19:29:28

标签: ios sorting swift nsarray unrecognized-selector

嘿,stackoverflow的人,

我在swift中实现了这个类:

class PCCountedColor {

    var color:UIColor
    var count:Int

    init (color:UIColor, count:Int)
    {
        self.color = color;
        self.count = count;
    }

    func compare(object:PCCountedColor) -> NSComparisonResult
    {
        if ( self.count < object.count )
        {
            return NSComparisonResult.OrderedDescending
        }
        else if ( self.count == object.count )
        {
            return NSComparisonResult.OrderedSame
        }

        return NSComparisonResult.OrderedAscending
    }
}

然后我有一个NSMutableArray,它正在填充上面类的对象:

var sortedColors:NSMutableArray = []
var container:PCCountedColor = PCCountedColor(color:curColor, count: colorCount)
sortedColors.addObject(container)

之后我尝试通过上面的类中的特殊函数对该数组进行排序:

sortedColors.sortedArrayUsingSelector(Selector("compare:"))

但我得到的只是一个错误:

  

SwiftColorArt [1584:42892] *** NSForwarding:警告:对象   类&#39; SwiftColorArt.PCCountedColor&#39;的0x7fd391b25a50才不是   实现methodSignatureForSelector: - 事先无法识别   选择器 - [SwiftColorArt.PCCountedColor compare:]

我是Swift的新手,已经检查过Apple's official documentation which can be found here.

我尝试了几种语法变体(添加&#34;:&#34;或删除它们,将函数名称作为字符串传递或不传递......以及各种组合)但它们都没有帮助。

所以在我的绝望中,我求助于你。

致以最诚挚的问候,

1 个答案:

答案 0 :(得分:3)

  

&#34; SwiftColorArt.PCCountedColor&#39;没有实现methodSignatureForSelector: - 麻烦提前无法识别的选择器 - [SwiftColorArt.PCCountedColor compare:]&#34;

错误消息告诉您该怎么做。使这个类成为NSObject的子类,一切都会很好。