К ответу benc's приложения , см. Стандартный ECMA-262. Это официальные зарезервированные слова, но только педант игнорирует реализацию для уважения стандарта. Для зарезервированных слов самых популярных реализаций, который является Firefox и Internet Explorer, см. ответ benc.
зарезервированные слова в EMCAScript-262 зарезервированное слово s, NullLiteral будущего Ключевого слова s, , и BooleanLiteral с, где эти Ключевые слова
break do instanceof typeof
case else new var
catch finally return void
continue for switch while
debugger function this with
default if throw
delete in try
, будущее Зарезервированное слово †‹s
abstract export interface static
boolean extends long super
byte final native synchronized
char float package throws
class goto private transient
const implements protected volatile
double import public
enum int short
, NullLiteral
null
и BooleanLiteral , с
true
false
Вместо использования NSFetchedResultsController в качестве источника данных представления таблицы, создайте NSArray, который вы устанавливаете, когда пользователь изменяет порядок сортировки с вашим сегментированным элементом управления, основываясь на содержимом массива на полученных результатах. Затем просто выполните сортировку, используя стандартную сортировку массивов. Примерно так:
- (IBAction)segmentChanged:(id)sender
{
// Determine which segment is selected and then set this
// variable accordingly
BOOL ascending = ([sender selectedSegmentIndex] == 0);
NSArray *allObjects = [fetchedResultsController fetchedObjects];
NSSortDescriptor *sortNameDescriptor =
[[[NSSortDescriptor alloc] initWithKey:@"name"
ascending:ascending] autorelease];
NSArray *sortDescriptors = [[[NSArray alloc]
initWithObjects:sortNameDescriptor, nil] autorelease];
// items is a synthesized ivar that we use as the table view
// data source.
[self setItems:[allObjects sortedArrayUsingDescriptors:sortDescriptors]];
// Tell the tableview to reload.
[itemsTableView reloadData];
}
Итак, описатель сортировки, который я использовал, называется "имя", но вы бы изменили это на имя поля, по которому хотите отсортировать результаты в полученных результатах. Кроме того, элементы ivar, на которые я ссылался, будут вашим новым источником данных табличного представления. Теперь делегаты представления таблицы будут выглядеть примерно так:
- (NSInteger)tableView:(UITableView*)tableView
numberOfRowsInSection:(NSInteger)section
{
return [items count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
// Get your table cell by reuse identifier as usual and then grab one of
// your records based on the index path
// ...
MyManagedObject *object = [items objectAtIndex:[indexPath row]];
// Set your cell label text or whatever you want
// with one of the managed object's fields.
// ...
return cell;
}
Не уверен, что это лучший способ, но он должен работать.
fetchRequest
- свойство только для чтения. Строка кода в вашем сообщении не будет работать. Если вы хотите использовать другой запрос на выборку, вам необходимо заменить свой контроллер новым NSFetchedResultsController
. Ваш стол не будет перезагружен автоматически. Вам нужно будет отправить ему сообщение reloadData
через некоторое время после того, как вы замените NSFetchedResultsController
.