Bitcast要求两个操作数都是指针,或者既不是Swift编译器的错误

时间:2014-07-09 09:21:34

标签: ios xcode swift

我对Swift犯了一个可怕的错误,尽管进行了大量的研究,但我并未在Google上找到任何帮助。

  

Bitcast要求两个操作数都是指针或%116 =   bitcast i8 *%115到%SS,!dbg!249 ICmp的操作数类型无效   指令%117 = icmp ne%SS%116,null,!dbg!249 PHI节点必须   至少有一个条目。如果块已经死亡,那么PHI应该是   删除! %120 = phi i32 PHI节点操作数与类型不同   结果! %119 = phi i8 * [%116,%108] LLVM错误:已损坏   找到函数,编译中止了!

我真的不知道这个错误发生在哪里,因为经过一些重构后,我在很多文件中做了更改。

我决定创建一个Q& A风格的帖子,以帮助其他开发人员找到此错误的含义。

希望它有所帮助!

2 个答案:

答案 0 :(得分:0)

在几小时内评论/删除了我项目的所有代码之后,我终于找到导致我原始帖子中发布错误的行。

class LoginAccountViewController : UIViewController
{    
    @IBOutlet var loginFacebook : UIButton?
    @IBOutlet var emailField : UITextField?

    override func viewDidLoad()
    {
        super.viewDidLoad()
    }

    override func viewWillAppear(animated: Bool)
    {
        super.viewWillAppear(animated)
    }

    @IBAction func loginEmail(sender: AnyObject)
    {
        if let emailAddress = emailField?.text as? String // THIS IS THE BAD LINE
        {
        }
    }
}

错误是我试图向名为text的属性进行展开式向下转换,这不是可选的,因为包含该属性的对象是可选的。这是一个很大的错误。

好的解决方案是向emailField属性进行展开式转发,然后,text属性不需要解包来访问其值。

if let emailAddress = emailField as? UITextField
{
    println(emailAddress.text)            
}

答案 1 :(得分:0)

我曾经遇到过这个问题。突然我修改了它,当我替换了line(skipBtn是一个UIButton)

skipBtn.setTitleColor(.whiteColor(), forState: .Normal)

skipBtn.setTitleColor(UIColor.whiteColor(), forState: .Normal)

我不知道为什么,但在我看来,当你删除额外的课程名称时,此功能尚不支持100%。