آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

 EXC_BAD_INSTRUCTION

JSONObject  10 سال پیش  8 سال پیش
0 0

 دوستان وقت بخیر

 کد من چه ایرادی داره که اررور 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) }

 مرسی .

 برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال 
کاشی زاده  10 سال پیش
+1 0

احتمالا edtName خالی هست یا به جای وارد کردن عدد دارید مقدار متنی وارد میکنید . اگر به Debug Area یا همون پنجره خطایابی دقت کنید باید برای شما خطایی را نمایش دهد :

 fatal error: unexpectedly found nil while unwrapping an Optional value

زمانیکه از علامت ! به عنوان Optional استفاده میکنید ، به این معنی هست که این مقدار کنترل شده هست و خالی نخواهد بود .
حالا راه حل :
- محدود کردن Keyboard برای وارد کردن مقادیر غیر عددی
- بررسی کنترل قبل از واریز با استفاده از دستور شرطی if و اطمینان از خالی نبودن خاصیت text مربوط به کنترل.

0 0
مرسی ، ولی مطمئنم که وقتی به اون خط میرسه نه nilـه و نه "". ضمن اینکه مقادیر رو با کیبورد وارد نمیکنم ، باتن یک تا نه رو گذاشتم و متن داخل باتن که همون عدد باشه رو میخونم (10 سال پیش)
0 0
در Debug Area چیزی برای شما ننوشته به عنوان خطا ؟ (10 سال پیش)
+1 0
البته توجه داشته باشید که اگر مقدار غیر عددی نیز داخل آن درج کرده باشید باز مقدار nil است . (10 سال پیش)
پاسخ به سوال 
Mohammad Vp  10 سال پیش
0 0

 
 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.
    }


}

خوب این کد رو تست کردم و اروری نداد شمام میتونید همینو کپی پیست کنید ببینید مشکل حل میشه ؟؟

فقط مقادیر عددی بدون اسپیس وارد کنید

اگر مشکل حل نشد اسکرول کنید پایین, پست بعدی احتمالا کمکتون میکنه حل شه ...

پاسخ به سوال 
Mohammad Vp  10 سال پیش
+1 0

خوب چون علاقه دارم با مشکلات درگیر شم فک کنم مشکلتونو فهمیدم به این عکس دقت کنید تا توضیحش بدم ارورش کپی ارور شماست!

اول ارور رو بخونید! دقیقا ارور شماست !!!(البته این ارور میتونه بر اثر وارد کردن مقادیری غیر از عدد گرفته بشه ولی شما گفتید که مقادیر درست وارد میشه پس یحتمل مشکلتون باید این باشه)!

حالا مشکل چیه؟

شما احتمالا یا یادتون رفته یا بر اثر اشتباه اتصال بین UI (تکست فیلد) رو با کدی که نوشتید قطع کردید وقتی اون دایره خالی باشه یعنی به هیچ کجا وصل نیست! اگرم وصله شاید به مکان اشتباهی وصل شده پس حتما ابتدا اتصال بین کد و ویو کنترلتونو بررسی کنید.

و وقتی برروی باتن زده میشه مقداره nil وارد کد میشه و شما در کدتون گفتید که من صد درصد مطمنم هیج چیزی جز اینتیجر عدد وارد نمیشه و ازتون ارور میگیره

ولی چناچه همه چی درست بود کدی که در پست قبلی نوشتم رو جایگزین کنید و اتصالات رو برقرار کنید قطعا نتیجه خواهید گرفت!

امیدوارم مشکلتون همین باشه تا حل شه:)

موفق باشید

+1 0
فاصله بین : و Int مشکلی ایجاد نمیکنه ولی همونطور که اشاره کردید ممکن هست Connection مربوطه قطع شده باشه و با توجه به وجود ! بعد از Property مربوط به edtNumber موقع کامپایل خطایی دریافت نشده و این خاصیت موقع اجرا خالی هست (nil) (10 سال پیش)
+1 0
در واقع در خط مربوط به دستور واریز شما از دو علامت ! استفاده کردید اولی (داخل پرانتز) مربوط به خالی نبودن خاصیت text و دومی مربوط به وارد شدن عدد صحیح و تبدیل آن از String به Int هست . (10 سال پیش)
+1 0
بله درسته خودمم از موضوع اول که فاصله بود مطمن نبودم ولی چندبار که به مشکل خوردم سر همین قضیه اسپیس زدن واسه همون گفتم شاید حساس باشه به هر حال ممنون و امیدوارم مشکل ایشون حل شده باشه (10 سال پیش)
0 0
متاسفانه یا خوشبختانه کانکشن ها متصل اند و با و بدون فاصله این مشکل هنوز گاهی وجود داره ولی سناریوی ثابتی براش پیدا نکردم، مرسی (10 سال پیش)
+1 0
یکبار پروژه رو با زدن CTRL + F4 کلین کنید و بعد با زدن دکمه F4 به صورت تکی مجددا پروژه رو بیلد کنید . برنامه رو هم از روی Simulator قبل از اجرای مجدد حذف کنید . (10 سال پیش)
0 0
خب اگه کدها درست باشند و کانکشن ها هم وصل باشند و بعد از کلین کردن بازهم مشکل داشته باشه که واقعا عجیبه , بنظرم کلا پروژه رو پوششو دیلیت کنید دوباره یکی دیگه بسازید , واقعا عجیبه که همه چی درست باشه ولی کار نکنه! (10 سال پیش)
پاسخ به سوال 
Mhd3  8 سال پیش
0 0

سلام.. 

منم این ارور رو ژمان اجرا میگیره :

 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()

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .