小编jba*_*aga的帖子

在Swift 3中使用NSUndoManager和.prepare(withInvocationTarget :)

我正在将Xcode 7/Swift 2.2 mac OS X项目迁移到Xcode 8/Swift 3,我在我的视图控制器类MyViewController中使用undoManager遇到了一个问题,它有一个函数undo.

在Xcode 7/Swift 2.2中,这很好用:

undoManager?.prepareWithInvocationTarget(self).undo(data, moreData: moreData)
undoManager?.setActionName("Change Data)
Run Code Online (Sandbox Code Playgroud)

在Xcode 8/Swift 3中,使用https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/AdoptingCocoaDesignPatterns.html中推荐的模式

这应该改为:

if let target = undoManager?.prepare(withInvocationTarget: self) as? MyViewController {
    target.undo(data, moreData: moreData)
    undoManager?. setActionName("Change Data")
}
Run Code Online (Sandbox Code Playgroud)

但是,向MycastController的向下转换始终失败,并且未注册撤消操作.

我错过了一些明显的东西,或者这是一个错误?

macos nsundomanager swift3 xcode8

7
推荐指数
1
解决办法
1823
查看次数

将openSSL添加到Swift OS X项目以进行收据验证

我试图在Swift OS X项目中包含OpenSSL以进行收据验证.

我已经成功构建了必要的OpenSSL头文件和库文件.我已将它们添加到我的项目中,但是这样做并未提示创建桥接头文件.我已经使用#import手动为每个openssl头文件创建了桥接头文件.在项目构建设置中,我已将"swift编译器 - 代码生成"下的目标C桥接头设置为我的桥接头.我已经按照收据验证编程指南中的描述生成了有效负载格式的ans1c文件:"清单1-1 ASN.1有​​效载荷格式的定义"并将它们添加到我的桥接头中.

我构建时遇到很多编译错误,主要是openSSL头文件中的未知类型名称,我认为这些文件会在ans1c头文件中定义,但它们不是.我也收到错误"无法导入桥接头...(我的桥接头文件)".

我的想法已经不多了,可能不得不放弃openSSL进行收据验证.如果有人知道我做错了什么,或者你有另一种方法进行验证,我很乐意听到.我的应用程序将有IAP,所以我似乎需要某种方式来检查收据.

macos swift

6
推荐指数
1
解决办法
1158
查看次数

标签 统计

macos ×2

nsundomanager ×1

swift ×1

swift3 ×1

xcode8 ×1