2015-10-10 22 views
6

Tôi có đoạn mã này được làm việc ok trong XCode6 (Swift 1.2) nhưng không phải với Swift 2:NSManagedObject.setValue (giá trị: AnyObject ?, forKey chính: String) gây ra lỗi trong Swift 2.0

class func findOrCreate<T: NSManagedObject>(type: T.Type, attribute: String, value: AnyObject?) -> T { 
    if let object = T.MR_findFirstByAttribute(attribute, withValue: value) as? T { 
     return object 
    } else { 
     let object = T.MR_createEntity() as! T 
     if let value:AnyObject = value { 
      object.setValue(value, forKey: attribute) 
     } 
     return object 
    } 
} 

Lỗi hiển thị trên dòng chứa object.setValue với thông điệp:

sử dụng mơ hồ của 'setValue (_: forKey :)'

tôi nghĩ rằng nó không nhận ra đối tượng là các NSMa nagedObject loại nhưng tôi không chắc chắn 100%, bất kỳ đầu mối tại sao điều này xảy ra nhiều đánh giá cao.

Trả lời

6

tôi đã đăng cùng một câu hỏi trên Apple diễn đàn và nhận được một câu trả lời với một cách giải quyết cho vấn đề này:

 let object = T.MR_createEntity() as! NSManagedObject 
     if let value:AnyObject = value { 
      object.setValue(value, forKey: attribute) 
     } 
     return object as! T 

này hoạt động như mong đợi. Tôi cũng đã gửi báo cáo lỗi cho Apple.

+0

công việc tốt, tôi chạy vào vấn đề này giống nhau, và nhận xét của bạn đã giúp tôi ra! cập nhật ở đây về độ phân giải của lỗi từ Apple. Cảm ơn! –

4

hơn Một giải pháp khả thi là thế này:

(object as NSManagedObject).setValue(value, forKey: attribute) 
+0

thx! hôm nay tôi cũng gặp phải vấn đề tương tự. Lỗi này vẫn tồn tại với Xcode 7.3.1. – Buju

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