我正在创建一个温度转换器。当我运行应用程序时;输入温度,选择转换方式并点击转换。出现错误。 错误是:EXC_BAD_INSTRUCTION(代码 = EXC_I386_INVOP,子代码 = 0x0)
这是我的 ViewController 代码:
import UIKit
class ViewController: UIViewController,UIPickerViewDataSource,UIPickerViewDelegate {
@IBOutlet weak var orginalValue: UITextField!
@IBOutlet weak var convertFrom: UIPickerView!
let pickerData = ["Celsius", "Fahrenheit"]
override func viewDidLoad() {
super.viewDidLoad()
convertFrom.dataSource = self
convertFrom.delegate = self
}
@IBOutlet weak var labelConvertFrom: UILabel!
@IBOutlet weak var convertTo: UIPickerView!
@IBOutlet weak var labelConverTo: UILabel!
@IBOutlet weak var answer: UILabel!
@IBAction func convertButton(sender: AnyObject) {
let a = Double(orginalValue.text!)
let tempConvertM = TempConvert(temp: a!)
answer.text = String(tempConvertM.convert())
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return pickerData.count
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickerData[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
labelConvertFrom.text = pickerData[row]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
这是我遇到错误的地方。 TempConverterModel.swift
import Foundation
extension ViewController{
class TempConvert{
var temp:Double
var view = ViewController()
init (temp:Double){
self.temp = temp
}
func convert()->Double{
if(view.labelConvertFrom.text == "Celsius"){ -->ERROR IS HIGHLIGHTED HERE <--
view.labelConverTo.text = "Fahrenheit"
return (temp-32)/1.8000; //fahrenheit formula
}
else{
view.labelConverTo.text = "Celsius"
return (temp*1.8000)+32; //celsius formula
}
}
}
}
我不知道我做错了什么。我想检查 labelConvertFrom 中的文本并检查它是否等于“摄氏度”。如果它没有返回答案。
我非常感谢任何人的帮助。谢谢!
最佳答案
作为par指出,您应该删除封闭的 extension ViewController { } 并将您的 TempConvert 作为一个单独的类。
此外,与其尝试在 TempConvert 中访问 ViewController 的实例变量,不如在 convertButton() 中进行比较> ViewController 类本身中的方法,并在 TempConvert 类中调用适当的转换方法。
更好的方法是在 ViewController 类中为“摄氏度”设置一个存储属性,为“华氏度”设置一个计算属性。可以引用这个link Swift 语言中的属性
关于swift - EXC_BAD_INSTRUCTION(代码 = EXC_I386_INVOP,子代码 = 0x0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33772231/
在我的mac上安装几个东西时遇到这个问题,我认为这个问题来自将我的豹子升级到雪豹。我认为这个问题也与macports有关。/usr/local/lib/libz.1.dylib,filewasbuiltfori386whichisnotthearchitecturebeinglinked(x86_64)有什么想法吗?更新更具体地说,这发生在安装nokogirigem时日志看起来像:xslt_stylesheet.c:127:warning:passingargument1of‘Nokogiri_wrap_xml_document’withdifferentwidthduetoproto
行为:Ruby1.9.2p180因“非法指令”而失败,没有其他详细信息。Ruby1.9.1p378运行完全没有问题。失败发生在pin=fronto.index(k)行中,仅在某些迭代中发生。from和into都是对象数组,by是该对象的属性(x或y)。代码:defadd_from_to_byfrom,into,bynto=into.sort_by{|k|k.send(by)}fronto=(from+nto).sort_by{|k|k.send(by)}dict={}nto.each{|k|dict[k]=[]}nto.eachdo|k|pin=fronto.index(k)up=pi
我正在尝试使用RubygemRestClient为我的一个FusionTables更新样式。这是我的代码:require'rest_client'tableId=''styleId=''key=''table_url="https://www.googleapis.com/fusiontables/v1/tables/#{tableId}/styles/#{styleId}?key=#{key}"update='{"polygonOptions":{"strokeColor":"#ffffff"}}'token='STRINGCONTAININGAUTHORIZATIONTOKEN'R
我安装了JRuby和Gitforwindows。然后我使用RubyInstaller安装了Ruby2.3x64。然后我安装了x64devkit。我安装了jsongem,它运行正常。运行rake--version给我错误:bash:/c/Ruby23-x64/bin/rake:C:/Users/Justin/Projects/rubyinstaller/sandbox/ruby23_mingw/bin/ruby.exe:错误的解释器:权限被拒绝我的名字不是Justin,我的计算机或网络上没有叫Justin的用户,我什至没有任何叫Justin的friend。是什么导致了这个问题?
这是我的代码:#app/models/user.rbclassUser:modeldolet(:user){FactoryGirl.create:user}it"shouldreturnthecorrectdisplayname"doexpect(user.display_name).toeql("Chuck")endend#spec/factories/users.rbFactoryGirl.definedofactory:userdoprovider"MyString"uid"MyString"name"ChuckNorris"oauth_token"MyString"oauth_
我需要部署我的Rails应用程序,所以我从这里开始执行了所有步骤,https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-puma-and-nginx-on-ubuntu-14-04但是在教程结束时,我得到了这个错误-->“502BadGateway”编辑现在的错误消息-->“很抱歉,出了点问题。”但是Nginx错误输出是相同的,我检查了puma错误消息,但它们只是记录它何时启动以及何时正常停止。位于app_directory/log下的Rails日志不产生任何输出。puma-man
每当我打开一个新的终端窗口时,我现在得到:-bash:/usr/local/bin/heroku:/usr/local/bin/ruby:错误的解释器:没有那个文件或目录知道为什么会发生这种情况以及如何摆脱它吗? 最佳答案 确保文件/usr/local/bin/heroku的第一行是#!/path/to/ruby。您可能需要将其从/usr/local/bin/ruby更改为/usr/bin/ruby,或者如果找不到ruby可执行文件,键入whichruby或updatedb&&locateruby找到它。如果上述方法不起作用
我正在使用rails3.2、Ruby1.9.3和encrypted_stringsgem,尝试以下操作:"wC6234sdf234234cCY1Lag==\n".decrypt(:symmetric,:key=>"mykeynottelling")我收到这个错误:OpenSSL::Cipher::CipherError:baddecrypt然而,这不会发生在Ruby1.8.7中。我对此有点迷茫,有人知道是什么原因造成的吗?更新1:如果我在ruby1.8.7中加密一个字符串:"password".encrypt(:symmetric,:key=>"www.buyandsell.ie"
我最近遇到了&method(:method_name)语法。(这使用Object#method方法-RDoclink)例如,[5,7,8,1].each(&method(:puts))相当于[5,7,8,1].each{|number|putsnumber}在Ruby的各种实现中,与前者相比,后者是否存在性能损失?如果是,实现者是否正在努力提高其性能? 最佳答案 是的,这似乎对性能不利。deftimestart=Time.nowyield"%.6f"%(Time.now-start)enddefdo_nothing(arg)endR
我搞砸了我的配置。我正在运行Ubuntu14.04,当我尝试从一个项目转移到另一个项目时遇到了一些问题。我尝试卸载并重新安装rbenv,然后按照本指南安装了Ruby2.1.7:https://gorails.com/setup/ubuntu/14.04.现在,当我运行geminstallbundler时,没有任何反应,我无法安装任何gem。当我输入bundler或bundler-v我看到这个:/usr/local/bin/bundler:/usr/bin/ruby1.9.1:badinterpreter:Nosuchfileordirectory我花了很多时间试图解决这个问题,但我真的