首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NSString.sizeWithAttributes()在Swift beta7中

NSString.sizeWithAttributes()在Swift beta7中
EN

Stack Overflow用户
提问于 2014-09-05 13:39:57
回答 2查看 3.4K关注 0票数 3

下面这段代码过去在Xcode 6 beta 5中工作得很好:

代码语言:javascript
运行
复制
func fitText(){
    let size = (self.text as NSString).sizeWithAttributes([NSFontAttributeName:self.font]) //Errors here
    self.frame.size = size
}

现在,它在第二行中给出了以下错误:

'UIFont‘不是'NSDictionary’的一个子类型 无法将表达式的类型“$T6”转换为键入“UIFont”

当我把它分成

代码语言:javascript
运行
复制
let dict = [NSFontAttributeName:self.font]
let size = (self.text as NSString).sizeWithAttributes(dict) //Even stranger errors go here

xcode说:

'UIFont‘不是'NSDictionary’的一个子类型 无法将表达式的类型“NSString:UIFont”转换为键入“CGSize”

在beta 7或6中,什么改变了它破坏了代码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-05 13:47:07

在beta 7中,通过将隐式展开选项转换为显式选项,一些具有可选和可选属性的方法签名已经修复。

在您的例子中,我假定text属性被声明为String! (隐式解包装),而现在它是一个String?。因此,您必须打开它,或者隐式地:

代码语言:javascript
运行
复制
let size = self.text!.sizeWithAttributes(dict)

或者更好地使用可选绑定:

代码语言:javascript
运行
复制
    if let text = self.text {
        let size = text.sizeWithAttributes(dict)
    }
票数 6
EN

Stack Overflow用户

发布于 2014-09-05 13:49:22

您的fitText函数对我来说工作得很好。

如果有帮助,以下是我在安装Xcode6-beta之后第一次运行新版本时通常会做的一些事情:

  1. 在Xcode > Preferences > Location下重复检查是否选择了最新的命令行工具
  2. 删除生成和DerivedData文件夹
  3. 重新启动Xcode
  4. 构建
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25687269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档