2014-06-09 20 views
10

Tôi đang cố thay đổi thuộc tính Bool và đang nhận lỗi EXC_BAD_ACCESS.Lỗi EXC_BAD_ACCESS khi cố gắng thay đổi thuộc tính Bool

Tôi đang sử dụng XCode 6 và Swift.

Thuộc tính note tiết kiệm tốt nhưng completed sở hữu ném lỗi EXC_BAD_ACCESS

enter image description here

import Foundation 
import CoreData 

class Task: NSManagedObject 
{ 

    @NSManaged var note: String! 
    @NSManaged var completed: Bool 

} 

Thay đổi ra các tài sản thông thường

// taskObject is an instance of Task() 

    // Set the completed flag 
    taskObject.completed = true // EXC_BAD_ACCESS 
+2

Tôi sẽ thử sử dụng 'NSNumber (bool: true)' thay vì 'true'. CoreData dựa trên sqlite không có kiểu bool, nó sử dụng số 0/1 trong nội bộ. –

+0

Điều này sẽ tạo ra lỗi loại do NSNumber không tuân thủ kiểu '@NSManaged completed: Bool' – vutran

+2

Biến của bạn phải là' NSNumber' trừ khi bạn kiểm tra rõ ràng "sử dụng giá trị vô hướng cho nguyên thủy" khi tạo tệp mô hình dữ liệu cốt lõi của mình. – borrrden

Trả lời

1

Tôi chỉ xem xét nộp một lỗi như Tôi có cùng một vấn đề nhưng nếu bạn thực sự muốn sử dụng Bool thì vẫn còn một cách giải quyết khác s để sử dụng phương pháp này:

setValue(true, forKey: "completed") 
2

Có cùng một vấn đề, giải pháp thực sự là sử dụng NSNumber trong thuộc tính @NSManaged. Ngoài ra, bạn có thể xác định một thuộc tính Bool được tính toán để bạn có thể làm việc với vô hướng Boolean trong logic nghiệp vụ của bạn và không phải với NSNumber.

var isCompleted: Bool { 
get { 
    return completed == NSNumber(bool: true) 
} 
set { 
    completed = NSNumber(bool: newValue) 
} 
} 
+0

Xin chào, tôi có cùng một vấn đề, nhưng trong khi lấy bool. Nó được lưu trữ như Integer trong khi nó hiển thị kiểu bool trong phương thức. Tôi cần hiển thị một cái gì đó dựa trên giá trị bool/integer. Đây có phải là thứ bạn biết không? 'commentsList [indexPath.row] .isSigned' cho ngoại lệ Bad_access. – Sashi

0

Tôi đã gần như chính xác vấn đề này.

Công cụ Boolean trong Dữ liệu chính.

Sự cố tôi gặp phải trong Trình chỉnh sửa dữ liệu chính trong 'CONFIGURATIONS' và 'C' Mặc định. Tôi không có thực thể của tôi liên quan đến lớp học chính xác.

Các vấn đề liên quan