Nhóm của tôi đã quyết định rằng các tệp mới nên được viết nhanh chóng và tôi thấy có vấn đề với việc sử dụng KVC trong đối tượng Objective-C để đặt thuộc tính trên đối tượng Swift.Tại sao tôi không thể sử dụng KVC từ đối tượng Objective-C đến thuộc tính Swift?
My Objective-C lập một tài sản như sau: [textObject setValue:0.0 forKey:@"fontSize"]
đối tượng Swift của tôi (textObject
) có một phong tục setter/getter cho thuộc tính này.
var fontSize: CGFloat? {
get {
return internalTextGraphic?.fontSize
}
set {
internalTextGraphic?.fontSize = newValue
}
}
Tuy nhiên, nếu tôi đặt điểm ngắt trong set
, nó sẽ không bao giờ bị trúng.
Tôi có đối tượng mục tiêu-C cũng nhận được cùng một cuộc gọi này và tôi chỉ triển khai -setFontSize
và việc thực thi được nhập đúng cách.
Tại sao tôi không thể chuyển sang phương thức set
của mình thông qua -setValueForKey
? Tôi đã xác nhận 100% số textObject
tồn tại và là loại chính xác.
EDIT:
Martin R là chính xác, tôi phải đặt loại không bắt buộc. Đây là mã làm việc của tôi:
var fontSize: CGFloat {
get {
var retFontSize: CGFloat = 0.0
if let fontSize = internalTextGraphic?.fontSize {
retFontSize = fontSize
}
return retFontSize
}
set {
if let textGraphic = internalTextGraphic {
textGraphic.fontSize = newValue
}
}
}
* "tùy chọn Swift không thể đại diện trong Objective-C" * - tốt, điều này không đúng đối với các loại lớp/giao thức tùy chọn, nhưng nó đúng với cấu trúc/enums, trong đó CGFloat là một. – jtbandes
@jtbandes: Bạn đúng, cố định - cảm ơn! –