Tag: swift3

使用 – observeValueForKeyPath:ofObject:change:context:在Swift 3中

我试图将Swift 2.2项目转换为Swift 3,我得到以下错误: Method 'observeValue(forKeyPath:ofObject:change:context:)' with Objective-C selector 'observeValueForKeyPath:ofObject:change:context:' conflicts with method 'observeValue(forKeyPath:of:change:context:)' from superclass 'NSObject' with the same Objective-C selector" for the function call 在我的function上签名是: func observeValue(forKeyPath keyPath: String?, ofObject: Any?, change: [String : Any]?, context: UnsafeMutableRawPointer?)." 我已阅读Swift 3 Migration Guide网站上的build议: “解决方法:在使用最初的Objective-Cselect器实现可选需求之前添加@objc(objectiveC:name :)属性。 但是我不清楚这实际上是应该在源文件中应用的,到目前为止我没有尝试过。 任何人都可以解释如何正确设置?

操作button不会出现在通知iOS 10中

我在我的应用程序中使用本地推送通知。 当在iOS 10中添加通知的操作button时,它不会显示在通知下方。 通知正在出现,但通知底部的操作button已丢失。 appdelegate代码如下。 import UIKit import CoreData import UserNotifications @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound]) {(accepted, error) in if !accepted { print("Notification access denied.") } } let action […]

在Swift 3和iOS 10中,展开segue不起作用

我试图在iOS 10和Swift 3中testingunwind segue。 我做了这样一个简单的应用程序: 我在TableViewController类中添加了segue的代码,并连接“取消”button,并在表视图控制器场景上退出: @IBAction func unwindToRootViewController(segue: UIStoryboardSegue) { print("Unwind to Root View Controller") } 但我简单的赛格不起作用。 我究竟做错了什么?

在Swift 3中将可选string转换为double

我有一个选项string,并希望将其转换为双倍。 这工作在Swift 2,但自从转换到Swift 3,我得到0的价值。 var dLati = 0.0 dLati = (latitude as NSString).doubleValue 我有检查和纬度有一个像-80.234543218675654类似的可选string值,但dLati值是0 ***************好的,新的更新清晰***************** 我有一个viewcontroller,我有一个button,当button被触摸,它会调用另一个viewcontroller并传递一些值,这里是第一个viewcontroller的代码 var currentLatitude: String? = "" var currentLongitude: String? = "" var deviceName = "" var address = "" // somewhere in the code, currentLatitude and currentLongitude are get set override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier […]

Firebase身份validation – 获取提供商ID

我正在使用以下代码来检测身份validation提供程序并正确注销 static func logOut() { let auth = FIRAuth.auth()! let provider = auth.currentUser?.providerID switch provider! { case "Facebook": FBSDKLoginManager().logOut() case "Google": GIDSignIn.sharedInstance().signOut() case "Twitter": Twitter.sharedInstance().sessionStore.logOutUserID(TWTRAPIClient.withCurrentUser().userID!) default: print("Unknown provider ID: \(provider!)") return } try! auth.signOut() } 但提供商始终是“Firebase”。 我究竟做错了什么? 0_o当我loginTwitter时,该代码就会抛出“Facebook”。 提前致谢 UPD:是的,我实际上可以在UserDefaults存储auth提供程序,但也许是Firebase的bug。 我正在使用Firebase SDK 3.5.2

Swift 3中的AVCaptureStillImageOutput与AVCapturePhotoOutput

我想简单地把我的视图控制器中的相机视图。 我在顶部导入了AVFoundation ,以及UIImagePickerControllerDelegate和UINavigationControllerDelegate类。 然而,每当我尝试使用AVCaptureStillImageOutput ,Xcode告诉我,它已被弃用iOS10,我应该使用AVCapturePhotoOutput 。 这是完全好的,但是,只要我想调用stillImageOutput.outputSettings , .outputSettings本身不可用。 因此,我不得不使用AVAVCaptureStillImageOutput它的工作,但我有多个警告,因为这个function已被弃用iOS10。 我search和search,但无法真正find解决scheme。 我将衷心感谢您的帮助。 我正在学习,所以任何解释都会很棒! 代码如下。 import UIKit import AVFoundation class CameraView: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { var captureSession : AVCaptureSession? var stillImageOutput : AVCaptureStillImageOutput? var previewLayer : AVCaptureVideoPreviewLayer? @IBOutlet var cameraView: UIView! override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) captureSession = AVCaptureSession() captureSession?.sessionPreset = AVCaptureSessionPreset1920x1080 var backCamera […]

(Swift 3)尝试在Swift 3中按datesorting类对象的数组?

我有一个对象的数组有一个types为Date的成员,我想按Datesorting整个数组,并且它不正确sorting。 这是我使用的代码,数组的名称是alarms ,成员types的名称Date是time 。 alarms.sort(by: { $0.time.compare($1.time) == .orderedAscending }) 每当我sorting它只是不能正常工作,我testing它通过打印for循环中的所有值。 有人可以帮我用这个语法吗?

swift中的NSAttributedString扩展3

我正在将我的代码迁移到swift 3,而且我很难用这个扩展工作在以前的swift版本上。 extension Data { var attributedString: NSAttributedString? { do { return try NSAttributedString(data: self, options:[NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8], documentAttributes: nil) } catch let error as NSError { print(error.localizedDescription) } return nil } } 现在,当我尝试调用这段代码时,我得到一个像这样的exception错误 error: warning: couldn't get required object pointer (substituting NULL): Couldn't load 'self' because its value couldn't be evaluated 这就是我从我的视图控制器调用方法 let htmlCode […]

在Swift中简单的服务,坚持只有前台?

我只是想要运行一些东西 每20秒就说一次 只是当应用程序是前景(明确地不运行时,背景) 显然,如果你不必费心去关注应用程序的进出,那将会更加优雅 这个问题,我很惊讶,学习与scheduleRepeating重申,在模拟器,它保持运行时,应用程序是在后台:这并不让我有信心,它明确不会在后台运行 (一些?什么?)设备 这个问题,我发现在一台设备上testing尽可能多的代/操作系统, scheduleRepeating重复烦人地将 (只在一些情况下)运行一次,只有当应用程序进入后台。 也就是说,一旦应用程序进入后台,它将运行“一次”。 吸。 所以要重复一下:在iOS中,如何拥有一个每20秒运行一次的简单服务,并且只在应用程序处于前台运行时运行,并且它是无忧无虑的。理想情况下,您不必重新启动它,它或应用程序的生命中的任何东西… 真的做这么简单的事情最好的办法是什么? 这是我的(似乎)工作的解决scheme,这是不雅的。 当然有一个内置的方式,或者什么,在iOS做这样一个明显的事情? open class SomeDaemon { static let shared = SomeDaemon() fileprivate init() { print("SomeDaemon is running") } var timer: DispatchSourceTimer? = nil let gap = 10 // seconds between runs func launch() { // you must call this from application#didLaunch // […]

Autolayout问题Xcode 8

转换我的代码到Swift 3我发现了一个奇怪的问题。 现在(2016年9月15日)Xcode 8(公开版)已经出来了,在转换代码之后,我的应用程序崩溃了,没有一个明显的原因。 自动布局有些问题,日志里写着这样的内容: [_SwiftValue nsli_superitem]: unrecognized selector sent to instance 我该如何解决? 谢谢