আমি [UIFont familyNames]
বর্ণানুক্রমিক ক্রমে ভরা একটি অ্যারে কীভাবে বাছাই করতে পারি ?
আমি [UIFont familyNames]
বর্ণানুক্রমিক ক্রমে ভরা একটি অ্যারে কীভাবে বাছাই করতে পারি ?
উত্তর:
সর্বাধিক সহজ পদ্ধতিটি হল, বাছাইকারী নির্বাচক সরবরাহ করার জন্য ( বিশদটির জন্য অ্যাপলের ডকুমেন্টেশন )
উদ্দেশ্য গ
sortedArray = [anArray sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
দ্রুতগতি
let descriptor: NSSortDescriptor = NSSortDescriptor(key: "YourKey", ascending: true, selector: "localizedCaseInsensitiveCompare:")
let sortedResults: NSArray = temparray.sortedArrayUsingDescriptors([descriptor])
অ্যাপল বর্ণানুক্রমিক বাছাইয়ের জন্য বেশ কয়েকটি নির্বাচক সরবরাহ করে:
compare:
caseInsensitiveCompare:
localizedCompare:
localizedCaseInsensitiveCompare:
localizedStandardCompare:
দ্রুতগতি
var students = ["Kofi", "Abena", "Peter", "Kweku", "Akosua"]
students.sort()
print(students)
// Prints "["Abena", "Akosua", "Kofi", "Kweku", "Peter"]"
এখানে প্রদত্ত অন্যান্য উত্তরগুলি উল্লেখ করে @selector(localizedCaseInsensitiveCompare:)
এটি এনএসএসটিংয়ের একটি অ্যারের পক্ষে দুর্দান্ত কাজ করে , তবে আপনি যদি অন্য কোনও বস্তুর কাছে এটি প্রসারিত করতে চান এবং সেই বিষয়গুলিকে একটি 'নাম' সম্পত্তি অনুসারে বাছাই করতে চান তবে পরিবর্তে আপনার এটি করা উচিত:
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
sortedArray=[anArray sortedArrayUsingDescriptors:@[sort]];
আপনার অবজেক্টগুলি সেই জিনিসগুলির নামের সম্পত্তি অনুসারে বাছাই করা হবে।
আপনি যদি বাছাই করতে চান তবে সংবেদনশীল হতে হবে, আপনার এই জাতীয় বিবরণী সেট করতে হবে
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];
name
একটি বৈধ কী নয়। এনএসএসর্টডেস্কিপ্টরের সাহায্যে স্ট্রিংগুলি বর্ণানুক্রমিকভাবে বাছাই করতে আমি কী কী ব্যবহার করব?
এনএসএনমেরিকস অনুসন্ধানের মতো জিনিসগুলি ব্যবহার করতে এনএসএসস্ট্রিংয়ের একটি তালিকা বাছাইয়ের আরও শক্তিশালী উপায়:
NSArray *sortedArrayOfString = [arrayOfString sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [(NSString *)obj1 compare:(NSString *)obj2 options:NSNumericSearch];
}];
SortDescriptor এর সাথে সম্মিলিত, এটি এমন কিছু দেবে:
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {
return [(NSString *)obj1 compare:(NSString *)obj2 options:NSNumericSearch];
}];
NSArray *sortedArray = [anArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]];
বর্ণানুক্রমিক ক্রমে বাছাই করার জন্য কোডের নীচে ব্যবহার করুন:
NSArray *unsortedStrings = @[@"Verdana", @"MS San Serif", @"Times New Roman",@"Chalkduster",@"Impact"];
NSArray *sortedStrings =
[unsortedStrings sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"Unsorted Array : %@",unsortedStrings);
NSLog(@"Sorted Array : %@",sortedStrings);
নীচে কনসোল লগ রয়েছে:
2015-04-02 16:17:50.614 ToDoList[2133:100512] Unsorted Array : (
Verdana,
"MS San Serif",
"Times New Roman",
Chalkduster,
Impact
)
2015-04-02 16:17:50.615 ToDoList[2133:100512] Sorted Array : (
Chalkduster,
Impact,
"MS San Serif",
"Times New Roman",
Verdana
)
স্ট্রিংগুলির অ্যারে বাছাই করার জন্য আরও একটি সহজ পদ্ধতি এনএসএসটিং description
সম্পত্তিটি এভাবে ব্যবহার করে থাকে :
NSSortDescriptor *valueDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES];
arrayOfSortedStrings = [arrayOfNotSortedStrings sortedArrayUsingDescriptors:@[valueDescriptor]];
এর মধ্যে বেশিরভাগ উদ্দেশ্যে ইতিমধ্যে ভাল উত্তর রয়েছে তবে আমি আমার যুক্ত করব যা আরও নির্দিষ্ট specific
ইংরেজী ভাষায়, সাধারণত যখন আমরা বর্ণমালা করি তখন আমরা একটি বাক্যাংশের শুরুতে "দ্য" শব্দটিকে উপেক্ষা করি। সুতরাং "ইউনাইটেড স্টেটস" "ইউ" এর অধীন অর্ডার করা হবে "টি" নয়।
এটি আপনার জন্য এটি করে।
এগুলি বিভাগগুলিতে রাখাই ভাল হবে।
// Sort an array of NSStrings alphabetically, ignoring the word "the" at the beginning of a string.
-(NSArray*) sortArrayAlphabeticallyIgnoringThes:(NSArray*) unsortedArray {
NSArray * sortedArray = [unsortedArray sortedArrayUsingComparator:^NSComparisonResult(NSString* a, NSString* b) {
//find the strings that will actually be compared for alphabetical ordering
NSString* firstStringToCompare = [self stringByRemovingPrecedingThe:a];
NSString* secondStringToCompare = [self stringByRemovingPrecedingThe:b];
return [firstStringToCompare compare:secondStringToCompare];
}];
return sortedArray;
}
// Remove "the"s, also removes preceding white spaces that are left as a result. Assumes no preceding whitespaces to start with. nb: Trailing white spaces will be deleted too.
-(NSString*) stringByRemovingPrecedingThe:(NSString*) originalString {
NSString* result;
if ([[originalString substringToIndex:3].lowercaseString isEqualToString:@"the"]) {
result = [[originalString substringFromIndex:3] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}
else {
result = originalString;
}
return result;
}
-(IBAction)SegmentbtnCLK:(id)sender
{ [self sortArryofDictionary];
[self.objtable reloadData];}
-(void)sortArryofDictionary
{ NSSortDescriptor *sorter;
switch (sortcontrol.selectedSegmentIndex)
{case 0:
sorter=[[NSSortDescriptor alloc]initWithKey:@"Name" ascending:YES];
break;
case 1:
sorter=[[NSSortDescriptor alloc]initWithKey:@"Age" ascending:YES];
default:
break; }
NSArray *sortdiscriptor=[[NSArray alloc]initWithObjects:sorter, nil];
[arr sortUsingDescriptors:sortdiscriptor];
}