การเข้าถึงไม่ถูกต้องเมื่อสร้างอินสแตนซ์ NSPredicate [ซ้ำกัน]

นี่คือรหัสที่ใช้งานได้กับ Xcode 9.2:

let request: NSFetchRequest<MyModel> = MyModel.fetchRequest()
request.predicate = NSPredicate(format: "saved = %@", true as CVarArg)

และหลังจากอัปเดตเป็น Xcode 9.3 และ Swift 4.1 รหัสขัดข้อง:

เธรด 1: EXC_BAD_ACCESS (รหัส=1 ที่อยู่=0x1)

นี่คือส่วนที่ขัดข้อง

NSPredicate(format: "saved = %@", true as CVarArg)

คุณสมบัติที่บันทึกไว้ของเอนทิตี MyModel ได้รับการประกาศเป็นบูลีน เหตุใดสิ่งนี้จึงเริ่มเกิดขึ้น แต่มันได้ผลมาก่อน


person Whirlwind    schedule 04.04.2018    source แหล่งที่มา
comment
ใช้ NSNumber(value: true) แทน stackoverflow.com/a/34631602/3151675   -  person Tamás Sengel    schedule 04.04.2018


คำตอบ (1)


คุณไม่จำเป็นต้องทำให้มันซับซ้อนเกินไป หากคุณกำลังมองหา save = true อยู่เสมอ ก็แค่ใช้สตริงลิเทอรัลในภาคแสดงของคุณ

NSPredicate(format: "saved == true")
person rodfleischer    schedule 04.04.2018