2014-10-17 64 views
6

有LocalAuthentication和支持的iOS的使用問題7.0導入LocalAuthentification.framework在iOS 7.1崩潰

當我試圖

import LocalAuthentication 

我越來越崩潰,如果目標IOS版本少比8.0。

我試圖以紀念LocalAuthentication.framework在構建階段可選檢查級別的可用性致電:

var isTouchIDSupported: Bool { 
     if let contextClass: AnyClass = NSClassFromString("LAContext") { 
      return LAContext().canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, error: nil) 
     } 
     return false 
    } 

如果我評論LAContext()字符串喜歡不死機:

var isTouchIDSupported: Bool { 
      if let contextClass: AnyClass = NSClassFromString("LAContext") { 
       //return LAContext().canEvaluatePolicy(.DeviceOwnerAuthenticationWithBiometrics, error: nil) 
      } 
      return false 

}

如果我在我的代碼的任何位置訪問LA類(例如LAContext)的任何地方,它會在第一秒鐘啓動應用程序。我在這裏做錯了什麼?

控制檯日誌此崩潰:

dyld: Symbol not found: _objc_isAuto 
    Referenced from: /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 
    Expected in: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/usr/lib/libobjc.A.dylib 
in /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 
+0

你使用Swift嗎?那麼你可能需要創建一個橋頭文件並將其導入到那裏。 – user965972 2014-10-17 14:06:54

+0

選定的答案並未真正解決您的問題。你可以請張貼包含解決方案的實際答案。我也遭受同樣的問題。 – harshitgupta 2014-10-27 16:06:25

+0

我遇到了同樣的問題,並將「自動鏈接框架」更改爲NO。它沒有解決問題。你能修復它嗎? – DavidLiu 2014-10-27 18:54:17

回答

1

LocalAuthentication.framework可從iOS版8.0。 [iOS Frameworks]

爲了避免飛機墜毀在iOS的7,去 '工程目標' - > '構建階段' - >「鏈接二進制與圖書館 - >設置LocalAuthentication.framework的狀態爲 '可選'

+0

完成了,但它仍然墜毀。只有當我從構建階段中刪除LocalAuthentification.framework /鏈接庫與二進制文件相關時,纔會崩潰 – iiFreeman 2014-10-17 17:27:41

+0

由於框架可從iOS 8獲得,而不是向後兼容,因此您只能在iOS 8中使用它的方法。例如,可以將([[[UIDevice currentDevice] systemVersion] floatValue]> = 8.0){\\ LocalAuthentification method calls} – 2014-10-17 17:42:06

+0

這個問題出現在構建設置標誌「Link Frameworks Automatically」使用@import語句,因爲我將它更改爲NO,所有開始正常工作! – iiFreeman 2014-10-17 17:49:32

1

首先,我打上LocalAuthentification.framework作爲可選 代碼改變「鏈接框架自動」爲NO 那麼簡單的檢查訪問課前:

- (BOOL)isTouchIDSupported 
{ 
    if (NSClassFromString(@"LAContext")) { 
     return [self.context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:nil]; 
    } 
    return false; 
} 

正常工作對於m e,希望能幫助某人

+0

不起作用。我仍然得到:dyld:找不到符號:_objc_isAuto – akw 2014-10-31 03:56:00

+2

您是否試圖用#import 替換@import LocalAuthentication? – iiFreeman 2014-10-31 08:18:40

4

這似乎是模擬器中的一個錯誤。 做不是選擇iPhone 5s(7.1)。 如果您使用iPhone 5(7.1)並將LocalAuthentification.framework標記爲可選它的工作原理。 (鏈接框架自動NO以及)

爲iPad空氣(7.1)同樣的問題,但你可以使用可調整大小的iPad/iPhone的選項,它的工作原理。

1

嘗試使用預處理器指令有條件地導入LocalAuthentication框架和所有關聯的代碼。然後,您將能夠通過Xcode運行iOS 7.x模擬器和設備。