我在modelviewcontroller中有一个UILabel。 我想要做的是在我的代码的某个点上更改其文本。问题是它在第一点工作并停止在第二点工作,抛出以下错误:
unexpectedly found nil while unwrapping an Optional value
我发现了同样错误的其他问题,但这些解决方案对我不起作用。也许我对选项做错了。
以下是我的模型视图控制器的代码:
import UIKit
class CheckInViewController: UIViewController {
@IBOutlet weak var test: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(animated: Bool) {
print("Appeared")
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("scanViewController") as! ScanViewController
test.text = "Here it works" // FIRST POINT WORKS AND CHANGES THE LABEL
if let qrCode = vc.qrCode{ // vc.qrCode IS AN OPTIONAL
qrRead(qrCode)
vc.qrCode = nil
}
}
func qrRead(qrCode: String) {
print(qrCode)
test.text = "Here it doesnt work" // HERE IT STOPS WORKING
}
答案 0 :(得分:0)
您在将vc.qrCode
传递给nil
函数后直接将func qrRead(qrCode: String)
设置为vc.qrCode = nil
。
删除此行:class Person {
}
var a:Person? = Person()
if let some = a
{
print(unsafeAddressOf(some))
print(unsafeAddressOf(a!))
}
并检查错误是否仍然存在。
如果没有,我怀疑,其他地方没有变数。
记得使用if let,实际访问底层实例,而不是副本。
因此,当您将vc.qrCode设置为nil时,您还将qrCode设置为nil,当您尝试在qrRead函数中打印时会导致问题
示例:
0x0000000005011ed0
0x0000000005011ed0
打印:
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the web server when you make code changes.
config.cache_classes = false
# Do not eager load code on boot.
config.eager_load = false
# Show full error reports and disable caching.
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
# Don't care if the mailer can't send.
config.action_mailer.raise_delivery_errors = false
# Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log
# Raise an error on page load if there are pending migrations.
config.active_record.migration_error = :page_load
# Debug mode disables concatenation and preprocessing of assets.
# This option may cause significant delays in view rendering with a large
# number of complex assets.
config.assets.debug = true
# Asset digests allow you to set far-future HTTP expiration dates on all assets,
# yet still be able to expire them through the digest params.
config.assets.digest = true
# Adds additional error checking when serving assets at runtime.
# Checks for improperly declared sprockets dependencies.
# Raises helpful error messages.
config.assets.raise_runtime_errors = true
Raises error for missing translations
config.action_view.raise_on_missing_translations = true
end
这表明它们是内存中的相同实例。