sky*_*guy -1 ios notificationcenter swift swift3
我知道 NotificationCenter 已更改,并且我已查找如何使用此链接将其更改为新的实现: Swift 3 上的 NotificationCenter 问题,但我仍然无法让我的工作!我正在使用课堂教科书做我班上的作业,这是我目前的班级:
//
// ViewController.swift
// Persistence
//
// Created by Skyleguy on 10/31/16.
// Copyright © 2016 Skyleguy. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet var lineFields: [UITextField]!
override func viewDidLoad() {
super.viewDidLoad()
let filePath = self.dataFilePath()
if (FileManager.default.fileExists(atPath: filePath))
{
let array = NSArray(contentsOfFile: filePath) as! [String]
for i in 0 ..< array.count
{
lineFields[i].text = array[i]
}
}
let notificationName = Notification.Name("applicationWillResignActive")
NotificationCenter.default.addObserver(self, selector: #selector(Persistence.applicationWillResignActive(notification: NSNotification)), name: notificationName, object: nil)
// Do any additional setup after loading the view, typically from a nib.
}
func applicationWillResignActive(notification: NSNotification)
{
let filePath = self.dataFilePath()
let array = (self.lineFields as NSArray).value(forKey: "text") as! NSArray
array.write(toFile: filePath, atomically: true)
}
}
Run Code Online (Sandbox Code Playgroud)
在这一切之后,我仍然收到一个错误:
“模块“持久性”没有名为“applicationWillResignActive”的成员”
请帮忙!
首先,这一行是错误的:
let notificationName = Notification.Name("applicationWillResignActive")
Run Code Online (Sandbox Code Playgroud)
拥有 Notification.Name 的全部意义在于您使用现有的常量,即.UIApplicationWillResignActive
.
其次,你的整个表达Persistence.applicationWillResignActive(...)
都是胡说八道。这不是您为#selector
. 此函数是 的一部分self
,因此只需使用函数名即可。
所以,像这样:
NotificationCenter.default.addObserver(self,
selector: #selector(applicationWillResignActive),
name: .UIApplicationWillResignActive,
object: nil)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5012 次 |
最近记录: |