2016-06-08 53 views
0

Realm在Xcode中無法正確排序大寫字母。我已經寫了下面的Realm按照發言人姓名排序。Realm在Xcode中無法正確排序大寫字母

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 

請讓我知道如何解決這個問題。

回答

2

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 

(要覆蓋的二傳手,定義name財產ignoredProperty

然後你就可以lowercaseMame排序。

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

這與我所做的一樣,但無論如何標記爲正確答案。 – ppshein