【问题标题】:Realm cannot sort properly for capital letter in Xcode领域无法正确排序 Xcode 中的大写字母
【发布时间】:2016-06-08 05:05:50
【问题描述】:

Realm 在 Xcode 中无法正确排序大写字母。我已经写了以下 Realm 以根据扬声器名称进行排序。

RLMResults *speakers = [[SpeakerDB objectsWhere:condition] sortedResultsUsingProperty:property ascending:YES];

全部为小写大写字母时,排序正确。但是当那些混合了大小写字母的时候,排序就出错了。

Choun-Ki JOO
Chul Young CHOI
CHAN Wing Kwong  << it gone wrong sorted.
CHEE Soon Phaik
Connie LAI

请告诉我如何解决这个问题。

【问题讨论】:

    标签: xcode sorting realm


    【解决方案1】:

    Realm 目前不支持不区分大小写的排序。

    另请参阅...https://github.com/realm/realm-cocoa/issues/2970

    如果您想在所有字母都是小写字母或大写字母时对结果进行排序,则应添加一个用于排序的属性。该属性存储与扬声器名称属性相同的值,但它包含所有小写字母(或全部大写)。像下面这样:

    @interface SpeakerDB : RLMObject
    
    @property (nonatomic) NSString *name;
    @property NSString *acturalName;
    @property NSString *lowercaseMame;
    
    @end
    
    @implementation SpeakerDB
    
    + (NSArray<NSString *> *)ignoredProperties {
        return @[@"name"];
    }
    
    - (void)setName:(NSString *)name {
        _name = name;
        self.acturalName = name;
        self.lowercaseMame = [name lowercaseString];
    }
    
    @end
    

    (要覆盖setter,将name属性定义为ignoredProperty。)

    然后你可以按lowercaseMame排序。

    RLMResults *speakers = [[SpeakerDB objectsWhere:condition]
                            sortedResultsUsingProperty:@"lowercaseMame" ascending:YES];
    

    【讨论】:

    • 这与我所做的相同,但无论如何都标记为正确答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 2020-08-24
    • 2018-09-23
    • 2017-05-09
    • 1970-01-01
    相关资源
    最近更新 更多