我想创建一个时区列表。 但是我在timeZone.abbreviation上遇到了以下错误。
- [__ NSCFString缩写]:无法识别的选择器发送到实例0x19cb80b0
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
// Configure the cell...
NSTimeZone *timeZone = [[NSTimeZone knownTimeZoneNames] objectAtIndex:indexPath.row];
cell.textLabel.text = timeZone.abbreviation; // <- Error Here
cell.detailTextLabel.text = timeZone.description;
cell.accessoryType = (timeZone == self.timeZone)? UITableViewCellAccessoryCheckmark :UITableViewCellAccessoryNone;
return cell;
}
我试图在互联网上搜索,但到目前为止我找不到解决方案。 请给我一些建议。 提前谢谢。
答案 0 :(得分:2)
尝试这样的事情:
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:[[NSTimeZone knownTimeZoneNames] objectAtIndex:indexPath.row]];
cell.textLabel.text = timeZone.abbreviation; // <- Error Here
cell.detailTextLabel.text = timeZone.description;
您当前的代码获取 NSStrings 的数组,而不是NSTimeZones。这应该会给你一个NSTimeZone,然后你可以获得abbreviation
属性。
答案 1 :(得分:0)
[NSTimeZone knownTimeZoneNames]
返回时区的字符串ID列表 - 因此您的时区对象实际上包含NSString而不是NSTimeZone对象。所以你必须这样做:
NSString *timeZoneID = [[NSTimeZone knownTimeZoneNames] objectAtIndex:indexPath.row];
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:timeZoneID];
获取真正的timezone对象来调用
上的缩写