2017-08-10 35 views
0

我正在使用一些代碼關閉github,並試圖將其轉換爲Swift 3.0。我所做的一切,到現在爲止,但我得到的3行代碼中的這一個錯誤:通過代碼與TouchiD錯誤「類型是不明確的,沒有更多的上下文」

表達的類型是模糊的沒有更多的情況下

下面我標誌着是線由此錯誤標記。我該如何解決這個問題?我知道的其他一切都有效。在修復之前,我無法測試演示本身。

// 
// PasscodeSettingsViewController.swift 
// PasscodeLockDemo 
// 
// Created by Yanko Dimitrov on 8/29/15. 
// Copyright © 2015 Yanko Dimitrov. All rights reserved. 
// 

import UIKit 
import PasscodeLock 

class PasscodeSettingsViewController: UIViewController { 
    @IBOutlet weak var passcodeSwitch: UISwitch! 
    @IBOutlet weak var changePasscodeButton: UIButton! 
    @IBOutlet weak var testTextField: UITextField! 
    @IBOutlet weak var testActivityButton: UIButton! 

    fileprivate let configuration: PasscodeLockConfigurationType 

    init(configuration: PasscodeLockConfigurationType) { 
     self.configuration = configuration 

     super.init(nibName: nil, bundle: nil) 
    } 

    @IBAction func passcodeSwitchValueChange(_ sender: UISwitch) { 
     let passcodeVC: PasscodeLockViewController 

     if passcodeSwitch.isOn { 
      // Error on next line 
      passcodeVC = PasscodeLockViewController(state: .SetPasscode, configuration: configuration) 
     } else { 

      // Error on next line 
      passcodeVC = PasscodeLockViewController(state: .RemovePasscode, configuration: configuration) 

      passcodeVC.successCallback = { lock in 

       lock.repository.deletePasscode() 
      } 
     } 

     present(passcodeVC, animated: true, completion: nil) 
    } 

    @IBAction func changePasscodeButtonTap(_ sender: UIButton) { 
     let repo = UserDefaultsPasscodeRepository() 
     let config = PasscodeLockConfiguration(repository: repo) 

     let passcodeLock = PasscodeLockViewController(state: .ChangePasscode, configuration: config) 

     // Error on next line 
     presentViewController(passcodeLock, animated: true, completion: nil) 
    } 
} 
+1

提供'PasscodeLockViewController'的定義或者提供GitHub repo的鏈接。 – nayem

+0

@nayem爲延誤抱歉。這裏是鏈接https://github.com/yankodimitrov/SwiftPasscodeLock –

+0

回購的主分支包含以前版本的Swift。所以你需要做很多工作來將它們轉換成最新版本的Swift。我建議您查看[此特定提交](https://github.com/yankodimitrov/SwiftPasscodeLock/tree/7a3d8033843b6977e12e0dece57f123727e82da3),其中包含實現部分的轉換。您只需修改演示部分/爲您的個人案例使用最新的語法。 – nayem

回答

0

回購的主分支包含以前版本的Swift。自動轉換後(當你第一次克隆該項目並打開Xcode和Xcode中提示您轉換爲當前斯威夫特語法)的LockState枚舉內PasscodeLockViewController類變爲:

public enum LockState { 
    case enterPasscode 
    case setPasscode 
    case changePasscode 
    case removePasscode 

    func getState() -> PasscodeLockStateType { 

     switch self { 
     case .enterPasscode: return EnterPasscodeState() 
     case .setPasscode: return SetPasscodeState() 
     case .changePasscode: return ChangePasscodeState() 
     case .removePasscode: return EnterPasscodeState(allowCancellation: true) 
     } 
    } 
} 

在演示項目,您被實例化使用的是:(這裏枚舉的情況是大寫.SetPasscode

passcodeVC = PasscodeLockViewController(state: .SetPasscode, configuration: configuration) 

你必須要改變這種itialization到:

passcodeVC = PasscodeLockViewController(state: .setPasscode, configuration: configuration) 

而對於在Xcode其他經常相同類型的錯誤,你必須分別進行更改。

相關問題