我对NSAttributedStringKey.attachment和NSAttachmentAttributeName有问题。以下是相关代码:
var key: Any?
if #available(iOS 11, *) {
key = NSAttributedStringKey.attachment
}
else {
key = NSAttachmentAttributeName
}有两件事正在发生。在我试图使用此代码的实际位置(我自己设计的Cococapod,部署目标为iOS 8,现在使用Xcode 9构建),我得到了一个错误:
Type 'NSAttributedStringKey' (aka 'NSString') has no member 'attachment'或者,如果我只创建一个新的示例项目并在iOS 8上设置部署目标,我就会得到:
'NSAttachmentAttributeName' has been renamed to 'NSAttributedStringKey.attachment'这不是我在#available中所期望的行为。有什么想法?
发布于 2017-09-11 05:08:53
这种String与struct的区别在于Swift 3(使用Strings如NSAttachmentAttributeName)和Swift 4(使用结构静态属性(如NSAttributedStringKey.attachment) ),而不是iOS <11和iOS >=11之间的区别。例如,您可以在Swift 4项目中的任何支持版iOS中使用NSAttributedStringKey.attachment和类似的(例如,.attachment自iOS 7以来就可用)。#available不适用,因为它是Swift语言版本的差异,而不是操作系统版本的差异。
确保您的吊舱设置为正确的Swift版本,然后它应该按照预期工作。您可以通过在项目顶部添加一个CocoaPods文件来告诉.swift-version:
$ echo 4.0 >.swift-version这个神奇的版本文件是在去年的CocoaPods博客文章中提到的:http://blog.cocoapods.org/CocoaPods-1.1.0/
https://stackoverflow.com/questions/46145780
复制相似问题