我正在尝试提取RSS源并按pubDate排序。当我检查'updated'属性时,大部分时间它是正确的并给我一个正确的日期但是当我尝试从一个集合转换为一个有序数组时,我得到了排序的随机结果。我已经跟踪了这个事实,当sort正在进行比较时,属性(这是一个NSDate,参见图1)正在进入并被比作__nscfnumber! (也见图2)
非常感谢任何帮助或想法。
如图一
figure2
答案 0 :(得分:0)
我假设比较器块仅用于诊断目的?实际上,您不需要为NSDate或任何提供的属性类型类提供比较器。
如果调试器报告date1
对象属于NSNumber-cluster类类型,则某个NSCFNumber
实例将分配给updated
属性。调试器忽略类似于强制转换的因素,而只是简单地询问对象它的类是什么。如果对象说它是NSCFNumber
,那么无论代码如何处理它都是如此。
为什么会发生这种情况,我不能根据提供的代码说出来。
您可以尝试记录updated
属性的值和类,然后再尝试排序以查看它是否正确报告。我还建议分解整行。嵌套所有这些方法调用当然会起作用,但它容易出错且难以调试。