EXC_BAD_INSTRUCTION
دوستان وقت بخیر
کد من چه ایرادی داره که اررور EXC_BAD_INSTRUCTION بهم میده
@IBOutlet weak var edtNumber: UITextField!
internal var result: Int = 0
@IBAction func onButtonClicked(sender: UIButton) { result = Int(edtNumber.text!)! // Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) }
مرسی .
احتمالا edtName خالی هست یا به جای وارد کردن عدد دارید مقدار متنی وارد میکنید . اگر به Debug Area یا همون پنجره خطایابی دقت کنید باید برای شما خطایی را نمایش دهد :
fatal error: unexpectedly found nil while unwrapping an Optional value
زمانیکه از علامت ! به عنوان Optional استفاده میکنید ، به این معنی هست که این مقدار کنترل شده هست و خالی نخواهد بود .
حالا راه حل :
- محدود کردن Keyboard برای وارد کردن مقادیر غیر عددی
- بررسی کنترل قبل از واریز با استفاده از دستور شرطی if و اطمینان از خالی نبودن خاصیت text مربوط به کنترل.
class ViewController: UIViewController {
@IBOutlet weak var edtNumber: UITextField!
internal var result:Int = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func OnButtonClicked(sender: UIButton) {
result = Int(edtNumber.text!)!
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
خوب این کد رو تست کردم و اروری نداد شمام میتونید همینو کپی پیست کنید ببینید مشکل حل میشه ؟؟
فقط مقادیر عددی بدون اسپیس وارد کنید
اگر مشکل حل نشد اسکرول کنید پایین, پست بعدی احتمالا کمکتون میکنه حل شه ...
خوب چون علاقه دارم با مشکلات درگیر شم فک کنم مشکلتونو فهمیدم به این عکس دقت کنید تا توضیحش بدم ارورش کپی ارور شماست!

اول ارور رو بخونید! دقیقا ارور شماست !!!(البته این ارور میتونه بر اثر وارد کردن مقادیری غیر از عدد گرفته بشه ولی شما گفتید که مقادیر درست وارد میشه پس یحتمل مشکلتون باید این باشه)!
حالا مشکل چیه؟
شما احتمالا یا یادتون رفته یا بر اثر اشتباه اتصال بین UI (تکست فیلد) رو با کدی که نوشتید قطع کردید وقتی اون دایره خالی باشه یعنی به هیچ کجا وصل نیست! اگرم وصله شاید به مکان اشتباهی وصل شده پس حتما ابتدا اتصال بین کد و ویو کنترلتونو بررسی کنید.
و وقتی برروی باتن زده میشه مقداره nil وارد کد میشه و شما در کدتون گفتید که من صد درصد مطمنم هیج چیزی جز اینتیجر عدد وارد نمیشه و ازتون ارور میگیره
ولی چناچه همه چی درست بود کدی که در پست قبلی نوشتم رو جایگزین کنید و اتصالات رو برقرار کنید قطعا نتیجه خواهید گرفت!
امیدوارم مشکلتون همین باشه تا حل شه:)
موفق باشید
سلام..
منم این ارور رو ژمان اجرا میگیره :
for record in sliderRecords
{
if record.column["pdcc"]?.asString() == "services2"
{
let tmp = (record.column["pdtitle"]!.asString())!
learn.pdtitle.append(tmp) //exc_bad_instruction (code=exc_i386_invop subcode=0x0)
services.mainTitle = "آموزش و مشاوره"
}
}
این کلاسم هست :
class StructService
{
var pdtitle:[String]!
var mainTitle:String!
var expanded: Bool!
}
var learn = StructService()
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .