我有一个使用本地通知并支持iOS 10的应用程序.我正在尝试添加iOS 9支持,这需要我使用旧的位置通知API.我试图在我的iOS 10代码上使用@available和#available,我无法弄清楚如何将我的中心变量仅用于运行iOS 10的设备.
当我将目标从iOS 10设置为9时,我收到此变量的错误消息:"UNUserNotificationCenter仅适用于iOS 10.0或更高版本." 它建议我将"@available(iOS 10.0,*)"添加到我的整个班级,我不想这样做,因为这个类中的代码将用于iOS 9.我很感激有关如何限制我的任何建议中心属性到iOS 10.
class ViewController: UIViewController, UITextFieldDelegate {
let center = UNUserNotificationCenter.current()
...
Run Code Online (Sandbox Code Playgroud) 我在 Swift 中发现了一个关于 @available 的有趣问题。我在我封装的TableView中添加了一个支持iOS 11及以上版本的var“UISwipeActionsConfiguration”,以支持列表单元格的左滑编辑和删除功能。我尝试模仿UITableView的写法来装饰Var,但是IDE直接编译报错。我只能尝试另一个set get方法来装饰。我不禁怀疑苹果开源的Swift源代码是如何隐藏的。已编译。
以下是苹果示例代码:
@available(iOS 2.0, *)
open class UITableView : UIScrollView, NSCoding, UIDataSourceTranslating {
@available(iOS 10.0, *)
weak open var prefetchDataSource: UITableViewDataSourcePrefetching?
@available(iOS 11.0, *)
weak open var dragDelegate: UITableViewDragDelegate?
@available(iOS 11.0, *)
weak open var dropDelegate: UITableViewDropDelegate?
}
Run Code Online (Sandbox Code Playgroud)
下面是我的示例代码:
@available(iOS 11.0, *)
public protocol HTCTableViewDelegate {
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration?
}
@available(iOS 11.0, *)
public typealias EditSwipeActionsCellCallback = (_ viewModel: Any, _ sectionModel: HTCTableViewSection) -> UISwipeActionsConfiguration?
public class JSDTableView …Run Code Online (Sandbox Code Playgroud)