Использование Физика в Человеко-машинном взаимодействии для обеспечения альтернативной, понятной метафоры. Это объединилось жестами, и haptics, вероятно, приведет к replacment для текущей общей метафоры GUI, изобретенной в 70-х и широко использующейся начиная с середины к концу 80-х.
вычислительная мощность не присутствовала в 1980 для создания этого возможным. Я верю , Игры вероятный шли впереди здесь. Пример может легко быть замечен во взаимодействии прокрутки списка в iPod Touch / iPhone. Механизм взаимодействия полагается на интуицию того, как работа импульса и трения в реальном мире для обеспечения простого способа прокрутить список объектов и удобство использования полагается на физический жест, которые вызывают прокрутку.
Отношения ко многим в Core Data моделируются как неупорядоченные наборы. Однако вы можете создать извлеченное свойство для объекта Department, которое включает дескриптор сортировки, или вы можете отсортировать набор в памяти в своем приложении ( NSArrayController
сделает это за вас, установив его sortDescriptors
] собственности).
Вам необходимо определить свой собственный метод, например sortedWorkers. Примерно так:
- (NSArray *)sortedWorkers {
NSSortDescriptor *sortNameDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES] autorelease];
NSArray *sortDescriptors = [[[NSArray alloc] initWithObjects:sortNameDescriptor, nil] autorelease];
return [self.workers sortedArrayUsingDescriptors:sortDescriptors];
}
У меня почти сработал фрагмент кода Хантера, за исключением того, что «рабочие» - это NSSet, мне пришлось сначала загрузить его в NSMutableArray:
- (NSArray *)sortedWorkers {
NSSortDescriptor *sortNameDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES] autorelease];
NSArray *sortDescriptors = [[[NSArray alloc] initWithObjects:sortNameDescriptor, nil] autorelease];
NSMutableArray *sortThese = [NSMutableArray arrayWithCapacity:[self.workers count]];
for (id worker in self.workers) {
[sortThese addObject:worker];
}
return [sortThese sortedArrayUsingDescriptors:sortDescriptors];
}
Minor improvement over Adrian Hosey's code:
Instead of manually iterating over all workers you can also just do:
-(NSArray *)sortedWorkers {
NSSortDescriptor *sortNameDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES] autorelease];
NSArray *sortDescriptors = [[[NSArray alloc] initWithObjects:sortNameDescriptor, nil] autorelease];
return [self.workers sortedArrayUsingDescriptors:sortDescriptors];
}
Probably does exactly the same thing as your iteration internally, but maybe they made it more efficient somehow. It's certainly less typing…
Note: the above only works on iOS 4.0+ and OSX 10.6+. In older versions you need to replace the last line with:
return [[self.workers allObjects] sortedArrayUsingDescriptors:sortDescriptors];