tôi có thể nhanh chóng lớp từ chuỗi trong ObjC.For Ví dụ, tôi đã xác định lớp DBCell mới thông qua subclassing UITableViewCell, và tôi nhanh chóng lớp từ tên với các mã:Làm thế nào để khởi tạo lớp và init từ chuỗi trong Swift?
DBCell *cell=[tableView dequeueReusableCellWithIdentifier:cellClassname];
if (cell==nil) {
Class cellClass=NSClassFromString(cellClassname);
cell=[cellClass alloc];
cell=[cell initWithStyle:cellStyle reuseIdentifier:cellClassname];
}
Bây giờ tôi cần chuyển mã để Swift, tôi đã xác định lại lớp DBCell trong Swift:
class DBCell: UITableViewCell {
var label:String?
var key:String?
var managedObject:NSManagedObject?
var delegate:AnyObject?
convenience override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
self.init(style: style, reuseIdentifier: reuseIdentifier)
self.textLabel.font=UIFont.preferredFontForTextStyle(UIFontTextStyleCaption1)
self.backgroundColor=UIColor.blackColor()
self.textLabel.backgroundColor=UIColor.blackColor()
}
}
Nhưng làm thế nào tôi có thể khởi tạo lớp và gọi hàm init thích hợp?
Tôi cảm thấy rằng vấn đề của bạn là do kiến trúc xấu, chủ yếu là thiếu đa hình được sử dụng đúng cách. Bạn có thể vui lòng hiển thị thêm mã obj-c ban đầu của bạn không? Sự khác biệt giữa các tế bào khác nhau là gì? – Sulthan
@Sulthan Đây là một mẫu Cocoa khá phổ biến. Bạn có ý nghĩa gì bởi "đa hình được sử dụng đúng" trong trường hợp này? Vấn đề là các tên ô được lưu trữ trong bảng phân cảnh, khá thuận tiện và hữu ích. Câu hỏi đặt ra là làm thế nào để làm điều đó trong khi vẫn duy trì an toàn loại Swift (và đó là một câu hỏi hợp lý). –