0

我正在尝试在我的应用程序中使用 RNCryptor 进行一些数据加密。

看下面的代码:

 var encryptedData: NSData = RNEncryptor.encryptData(data, withSettings:kRNCryptorAES256Settings, password: aPassword, error: nil)

体系结构 i386 的未定义符号:
“_kRNCryptorAES256Settings”,引用自:ChatBubbleViewController.o ld 中的 __TFC8UtraceUI24ChatBubbleViewController21textFieldShouldReturnfS0_FCSo11UITextFieldSb:未找到体系结构 i386 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

我不确定为什么它会尝试查找带有下划线的常量名称;理想情况下,它应该尝试在 bridgesupport 和其他头文件中查找 kRNCryptorAES256Settings。

任何线索可能出了什么问题?

谢谢 !

4

2 回答 2

1

您可能忘记将.m文件包含在构建中。检查构建阶段中的“构建源”步骤。

如果你使用 Swift,你可能想看看新的 Swift 版本。这将在下周合并到大师。

于 2015-10-09T13:59:50.197 回答
0

Swift 无法处理 C 结构,这就是 kRNCryptorAES256Settings 的作用。这个问题与设备的架构无关。

所以为了解决这个问题,我在 RNEcryptor 中创建了自己的方法,唯一的原因是抽象 C 结构的需求。

+ (NSData *)EncryptDataForSwift:(NSData *)data password:(NSString *)password error:(NSError **)error
{
    return [RNEncryptor encryptData:data withSettings:kRNCryptorAES256Settings password:password error:error];
}

我不确定这是否是个好主意,但这使我的项目可编译,因为我可以通过 Swift 调用我的方法,而无需引用任何纯 C 代码:

var encryptedData:NSData = RNEncryptor.EncryptDataForSwift(data, password: Password, error: nil)

希望这会对某人有所帮助。

于 2015-10-10T05:11:05.503 回答