使用 nsset 键值对数组进行排序

sorting array using nsset key value

在我的项目中,我有一些自定义数组 objects.Each object 将采用以下格式。

 {
enrollementStatus = 0;
enrollementType = 1;
titles =     (
    "0x7b316eb0 <x-coredata://6F003DDD-D6CD-4514-B565-FEF9203F188C/CourseText/p246>"
);}

在这个 object 中,标题是 nsset type.while 打印这个 object,它看起来像

   ( "<CourseText: 0x7b316f60>
     (entity: CourseText; id: 0x7b316eb0 data: 
    {\n    course = \"0x7aa69870 <x-coredata://6F003DDD-D6CD-4514-B565-FEF9203F188C/Course/p11>\";\n  
  descr = \"(null)\";\n   
     lang = \"en-US\";\n  
      title = CSDFFFFF;\n})"

我想根据 thistitles(NSSet object) 标题(字母顺序)对这个数组进行排序。请给我一个建议

您可以使用 NSSortDescriptor

对 NSSet 进行排序并创建一个排序的 NSArray
NSSortDescriptor *titleSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"title" ascending:YES];
NSArray *sortedObjects = [titles sortedArrayUsingDescriptors:@[titleSortDescriptor]];

编辑 1 根据评论更新答案:

据我了解,您的 object 结构是这样的:

  1. YourCustomObject 数组,其中 YourCustomObject 包含一个 NSSet 称为 标题
  2. titles 包含 object of class CourseText
  3. CourseText 有一个 属性 title
  4. 您想根据 CourseText[=] 的 title 属性 对 YourCustomObject 的数组进行排序40=].

为此,您可以使用 NSArraysortedArrayUsingComparator 方法。

//arrayOfCustomObjects is the array that contains your objects to be sorted
//Replace YourCustomObject with the actual class of the objects
NSArray* sortedArray = [arrayOfCustomObjects sortedArrayUsingComparator:^NSComparisonResult(YourCustomObject* obj1, YourCustomObject* obj2) {

    NSString* title1 = ((CourseText*)obj1.titles.anyObject).title;
    NSString* title2 = ((CourseText*)obj2.titles.anyObject).title;

    return [str1 compare:str2];

}];