使用plist中的数据填充表

时间:2015-01-09 21:06:17

标签: objective-c uitableview swift nsdictionary nssortdescriptor

我正在使用在目标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#>)]

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

问题似乎是为密钥传递了nil,尽管您收到了错误消息(Swift的错误信息并非如此迅速)。如果您不需要密钥,那么您应该使用sortedArrayUsingSelector:而不是

let keys: NSArray = articleDictionary.allKeys
var sortedCategories = keys.sortedArrayUsingSelector("localizedCompare:")

如果将key参数的空字符串(而不是nil)传递给sortDescriptorWithKey,它似乎也可以工作:ascending:selector: