2014-10-17 86 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模拟器和设备。