【问题标题】:Thread 1: EXC_BREAKPOINT (code=1, subcode=0x18407cb5c)线程 1:EXC_BREAKPOINT(代码=1,子代码=0x18407cb5c)
【发布时间】:2018-07-13 23:20:11
【问题描述】:

我不断收到此错误:

线程 1:EXC_BREAKPOINT(代码=1,子代码=0x18407cb5c)

每当我运行这段代码时:

import UIKit
import SQLite

class TakeMoney: UIViewController {
    //for json
    let json = "[{"+"\"UserID\":\""+"\(Int(stored_ID) ?? -1)\""+",\"Name\":"+"\"\(stored_name)\""+"}]"
    //
    var img : UIImage? = nil

    //variable for image display space
    @IBOutlet weak var ImageDisplay: UIImageView!
    //variable for raw qr image output
    var qrCodeImage : CIImage!
    override func viewDidLoad() {
        super.viewDidLoad()
        print(json)
        ////takes out the input and encodes it
        ///runs on main thread
        DispatchQueue.main.async{
            let data = self.json.data(using: String.Encoding.isoLatin1, allowLossyConversion: false)
            let filter = CIFilter(name: "CIQRCodeGenerator") //defining filter
            filter?.setValue(data, forKey: "inputMessage") //utilising filter
            filter?.setValue("L", forKey: "inputCorrectionLevel") //defining the level of quality, H is highest, L is lowest
            self.qrCodeImage = filter?.outputImage //getting the filter to output raw image
            //to set the size of qr code
            let length = self.ImageDisplay.frame.size.width
            let height = self.ImageDisplay.frame.size.height
            let transformedImage = self.qrCodeImage.transformed(by: CGAffineTransform(scaleX: length, y: height))
            //
            self.img = UIImage(ciImage: transformedImage)
            print(self.img!)
            if(self.img == nil){
                print("It is empty")
            }
            else{
                self.ImageDisplay.image = self.img
            }
        }
    }
}

此代码应该采用 JSON 值并将其转换为 QR 码,然后通过“ImageDisplay”图像视图元素显示。当我在模拟器上运行它时它可以工作,但是当我在手机上运行它时,它不起作用并且总是崩溃并产生前面所述的错误。

它在必须将 UIImage 分配给图像视图的点处崩溃:

self.ImageDisplay.image = self.img

【问题讨论】:

  • 最好告诉我们究竟是哪一行导致了崩溃。
  • @rmaddy 哦,是的....忘了添加...现在编辑它
  • @JonathanLamptey 如果您解决了这个问题,请发布答案。

标签: ios swift qr-code


【解决方案1】:

很可能,self.ImageDisplay 为零。由于它是一个隐式解包的可选项,如果它为 nil,访问它会崩溃。

您需要确保它已在您的故事板/xib 中连接。

【讨论】:

  • 这不是问题。在导致崩溃的行前几行,引用了 ImageDisplay 的框架。并且会有一个不同的例外(通常是 EXC_BAD_INSTRUCTION)。
  • 是的,这不是问题,因为它已经连接到情节提要。我检查了
【解决方案2】:

在实际检查 print(self.img!) 中是否为 nil 之前,您必须强制解包一个值。

force unwrap 很可能返回 nil,从而导致应用程序崩溃。

【讨论】:

  • 这不起作用,它仍然在self.ImageDisplay.image = self.img崩溃
猜你喜欢
  • 1970-01-01
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多