Tôi đang tải danh sách các đối tượng từ cơ sở dữ liệu lõi vào một chế độ xem bảng.[AnyObject]? ' không có thành viên có tên 'subscript'
class ScheduleViewController: UITableViewController {
private var items: [AnyObject]?
// MARK: - Table view data source
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if let itemCount = items?.count {
return itemCount
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("DayScheduleCell", forIndexPath: indexPath) as DayScheduleCell
if let act = items[indexPath.row] as Activity {
if act.client != nil {
// ...
}
}
return cell
}
}
Dữ liệu được lấy ra bên trong một đóng cửa vì vậy tôi đã tuyên bố một mảng items
như một tùy chọn, vì nó có thể là con số không trong thời gian đầu tiên.
Tôi gặp lỗi '[AnyObject]?' không có thành viên có tên 'subscript' tại dòng này if let act = items[indexPath.row] as? Activity
.
Tôi không thể tìm ra cách giải quyết vấn đề này.
Cảm ơn bạn đã trả lời. Tôi nhận được một lỗi mới ** Không thể gọi '! =' Với một danh sách đối số của kiểu '(@lvalue Client, NilLiteralConvertible)' ** tại dòng 'if act.client! = Nil'. Thuộc tính máy khách là thuộc tính chứa đối tượng 'Client'. Vui lòng xem 'NSManagedObject' [subclass] (http://pastie.org/9584414#) của' Activity'. Trong Mô hình Dữ liệu, kiểm tra dưới các thuộc tính cho máy khách, mặc dù nó được chọn là tùy chọn. – Isuru
'client' không phải là một tùy chọn, và vì vậy nó không thể là' nil' - do đó bạn không thể kiểm tra nếu nó không phải là không.'If' là khái niệm dư thừa và dĩ nhiên được coi là lỗi cho trình biên dịch – Antonio
Vì vậy, theo câu hỏi [this] (http://stackoverflow.com/q/25485273/1077789), mặc dù các thuộc tính được đánh dấu tùy chọn trong Dữ liệu cốt lõi, nó không được đề cập trong các lớp 'NSManagedObject' được tạo ra. Bạn phải thêm thủ công. Tôi đã thêm một '?' Vào trước thuộc tính của máy khách và bây giờ nó hoạt động tốt. – Isuru