我正在使用在目标C中编码的Ray Wenderlich教程填充plist中的表。我正在努力将以下代码从Objective C转换为Swift:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSSortDescriptor* sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:nil ascending:YES selector:@selector(localizedCompare:)];
NSArray* sortedCategories = [self.articleDictionary.allKeys sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
NSString *categoryName = [sortedCategories objectAtIndex:section];
NSArray *currentCategory = [self.articleDictionary objectForKey:categoryName];
return [currentCategory count];
}
当我转换如下:
var sortDescriptor:NSSortDescriptor = NSSortDescriptor(key: nil, ascending: true, selector: "localizedCompare:")
我收到编译错误,在调用
中声明“额外参数'选择器'然后当我尝试以下行时,我得到XCode建议我使用:
let sortedCategories:NSArray = [articleDictionary.allKeys.sort(<#isOrderedBefore: (AnyObject, AnyObject) -> Bool##(AnyObject, AnyObject) -> Bool#>)]
有什么建议吗?
答案 0 :(得分:0)
问题似乎是为密钥传递了nil,尽管您收到了错误消息(Swift的错误信息并非如此迅速)。如果您不需要密钥,那么您应该使用sortedArrayUsingSelector:而不是
let keys: NSArray = articleDictionary.allKeys
var sortedCategories = keys.sortedArrayUsingSelector("localizedCompare:")
如果将key参数的空字符串(而不是nil)传递给sortDescriptorWithKey,它似乎也可以工作:ascending:selector: