swift - 代码连接到情节提要时应用程序崩溃
问题描述
几天来,我一直在尝试将 IBOutlet 连接到我的 EditFreshReleaseViewController 中的 releaseatepicker、artisttextfield、albumtextfield、saveTapped 和 cancelTapped。但每当我运行应用程序并点击编辑按钮时,应用程序就会崩溃。当我断开该 ViewController 上的 IBOutlet 时,它会很好地打开编辑按钮,除非我被卡在那里,因为该 ViewController 现在没有任何作用。
有任何想法吗?
EditFreshReleaseViewController 上的 IBOutlets
下面是 EditFreshReleaseViewController 的代码:
import UIKit
import CoreData
import UserNotifications
class EditFreshReleaseViewController: UIViewController {
@IBOutlet var artisttextfield: UITextField!
@IBOutlet var albumtextfield: UITextField!
@IBOutlet var releasedatePicker: UIDatePicker!
override func viewDidLoad() {
super.viewDidLoad()
releasedatePicker.minimumDate = Date()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func saveTapped( _ sender: UIBarButtonItem) {
let artist = artisttextfield.text ?? ""
let album = albumtextfield.text ?? ""
let releasedate = releasedatePicker.date
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let newRelease = Release_Date(context: context)
newRelease.artist = artist
newRelease.album = album
newRelease.release_date = releasedate as NSDate?
newRelease.release_dateId = UUID().uuidString
if let uniqueId = newRelease.release_dateId {
print("The freshreleaseId is \(uniqueId)")
}
do {
try context.save()
let message = "\(artist)'s new album \(album) releases Today!"
let content = UNMutableNotificationContent()
content.body = message
content.sound = UNNotificationSound.default()
var dateComponents = Calendar.current.dateComponents([.month, .day],
from: releasedate)
dateComponents.hour = 09
dateComponents.minute = 00
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents,
repeats: true)
if let identifier = newRelease.release_dateId {
let request = UNNotificationRequest(identifier: identifier,
content: content, trigger: trigger)
let center = UNUserNotificationCenter.current()
center.add(request, withCompletionHandler: nil)
}
} catch let error {
print("Could not save because of \(error).")
}
dismiss(animated: true, completion: nil)
print("Added a Release Date!")
print("Artist: \(newRelease.artist)")
print("Album: \(newRelease.album)")
print("Release Date: \(newRelease.release_date)")
}
@IBAction func cancelTapped(_ sender: UIBarButtonItem) {
dismiss(animated: true, completion: nil)
}
}
解决方案
如果没有错误,很难找出解决方案,但您可以先让 @IBOutlet 变弱
@IBOutlet weak var artisttextfield: UITextField!
@IBOutlet weak var albumtextfield: UITextField!
@IBOutlet weak var releasedatePicker: UIDatePicker!
有时,当您从不同的 UIViewcontroller 复制和粘贴 UIViewcontroller 元素时,@IBOutlet 会丢失引用,请尝试清理您的项目,关闭 Xcode,重新启动所有内容。
推荐阅读
- laravel - Laravel 只为登录用户加载 echo 和 pusher
- angular - Angular 调用 web api 到基于 owin 的登录令牌
- r - facet_wrap() + ggplot2() 中每个方面的独立颜色渐变
- php - Joomla 3. 将文章的第一张图片设置为介绍图片
- python - 创建滞后变量
- npm - npm package-lock.json 通过检测可以合并的版本进行优化
- database - Graql 创建模式 grakn.core.kb.concept.api.EntityType 问题
- python - 尝试查找 img 类的 src 属性时的奇怪行为
- ansible - 如何使用 Ansible 的 zypper 模块列出所需的 Suse 服务器补丁?
- ruby-on-rails - 我应该如何在 Rails 6 中重新启动 spring