基于第二个数组对NSManagedObjects数组进行排序

时间:2016-03-31 21:52:05

标签: ios core-data nsmanagedobject nsmutabledictionary

我正在尝试根据与每个$('button').click(function(){ $('div').addClass('a'); $(this).attr('disabled','true').text('Started'); var counter = 5; function repeater() { if (counter >= 0) { $('div').toggleClass('a'); counter--; // start new cycle setTimeout(repeater, 3000); } else { // cleanup $('button').removeAttr('disabled').text('Finished | Again'); } } // boot the repeater repeater() }); 相关联的值对NSManagedObject数组进行排序。这些值的计算成本很高,所以我想最多计算一次。类似问题的大多数解决方案都涉及构造NSDictionary,但我的对象不一定(必然)符合NSCopying协议。我曾考虑使用对象ID,但是可能有更简洁的解决方案吗?这种方法有没有捕获?

2 个答案:

答案 0 :(得分:1)

  1. (new L1("test")).Test(a);子类中创建一个便捷方法,用于计算排序所需的值并将其返回。对其进行编码,使其仅计算一次值。
  2. 按方便法排序。
  3. 更新到OP

      

    你能详细说明你的工作方式吗?我应该使用NSCache吗?感谢

    您继承NSManagedObject

    NSManagedObject

    然后以懒惰的方式实现它:

    @interface MySubclass: NSManagedObject
    @property NSString *myCalculatedSortValue;
    
    - (NSString*)calculatedSortValue;
    
    @end
    

    然后您可以按@implementation MySubclass - (NSString*)calculatedSortValue { if (myCalculatedSortValue) return myCalculatedSortValue; //calculate value return myCalculatedSortValue; } 排序,并且每个生命周期只会计算一次。

    注意:只有在从商店中提取calculatedSortValue个实例后,这才会起作用。这不会直接对商店起作用,因为所有计算都发生在对象空间中。

答案 1 :(得分:0)

我找到了一个令人尴尬的简单解决方案来解决我的问题。我可以创建一个字典,其键是我们的数组中对象的索引,其关联值是与对象关联的值。我按值对字典进行排序,然后按键给出的顺序检索对象。