我正在嘗試快速運行影像比較。但是我收到一個錯誤訊息Cannot use instance member 'featureprintObservationForImage' within property initializer; property initializers run before 'self' is available。錯誤出現在第一let行。
為什么 self 在 ViewController 中不可用?
import UIKit
import Vision
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
func featureprintObservationForImage(atURL url: URL) -> VNFeaturePrintObservation? {
let requestHandler = VNImageRequestHandler(url: url, options: [:])
let request = VNGenerateImageFeaturePrintRequest()
do {
try requestHandler.perform([request])
return request.results?.first as? VNFeaturePrintObservation
} catch {
print("Vision error: \(error)")
return nil
}
}
let apple1 = featureprintObservationForImage(atURL:Bundle.main.url(forResource:"apple1", withExtension: "jpg")!)
let apple2 = featureprintObservationForImage(atURL: Bundle.main.url(forResource:"apple2", withExtension: "jpg")!)
let pear = featureprintObservationForImage(atURL: Bundle.main.url(forResource:"pear", withExtension: "jpg")!)
var distance = Float(0)
try apple1!.computeDistance(&distance, to: apple2!)
var distance2 = Float(0)
try apple1!.computeDistance(&distance2, to: pear!)
}
uj5u.com熱心網友回復:
函式右大括號后的所有代碼featureprintObservationForImage都不在任何函式或閉包內。你不能那樣做。(該代碼不僅僅是變數宣告。您有函式呼叫,這在函式之外是不合法的。
您可以創建稱為計算屬性的東西,在其中提供一個閉包,每次從屬性中讀取值時都會呼叫該閉包。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/446940.html
上一篇:Git個人訪問令牌快取
