使用 plist 中的数据填充 table
Populating a table with data from a plist
我正在按照 Objective C 中编码的 Ray Wenderlich 教程从 plist 填充 table。我正在努力将以下代码从 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:")
我收到一个编译器错误,指出“调用中有额外参数 'selector'
然后当我尝试以下行时,我得到 XCode 建议我使用:
let sortedCategories:NSArray = [articleDictionary.allKeys.sort(<#isOrderedBefore: (AnyObject, AnyObject) -> Bool##(AnyObject, AnyObject) -> Bool#>)]
有什么建议吗?
问题似乎出在为密钥传递 nil,尽管您收到了错误消息(Swift 的错误消息并非如此 swift)。如果您不需要密钥,那么您应该使用 sortedArrayUsingSelector: 代替,
let keys: NSArray = articleDictionary.allKeys
var sortedCategories = keys.sortedArrayUsingSelector("localizedCompare:")
如果将空字符串(而不是 nil)作为关键参数传递给 sortDescriptorWithKey:ascending:selector,它似乎也有效:
我正在按照 Objective C 中编码的 Ray Wenderlich 教程从 plist 填充 table。我正在努力将以下代码从 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:")
我收到一个编译器错误,指出“调用中有额外参数 'selector'
然后当我尝试以下行时,我得到 XCode 建议我使用:
let sortedCategories:NSArray = [articleDictionary.allKeys.sort(<#isOrderedBefore: (AnyObject, AnyObject) -> Bool##(AnyObject, AnyObject) -> Bool#>)]
有什么建议吗?
问题似乎出在为密钥传递 nil,尽管您收到了错误消息(Swift 的错误消息并非如此 swift)。如果您不需要密钥,那么您应该使用 sortedArrayUsingSelector: 代替,
let keys: NSArray = articleDictionary.allKeys
var sortedCategories = keys.sortedArrayUsingSelector("localizedCompare:")
如果将空字符串(而不是 nil)作为关键参数传递给 sortDescriptorWithKey:ascending:selector,它似乎也有效: