2016-08-18 25 views
7

Xcode beta 6 đã thay đổi một số Swift Ngôn ngữXcode 8 beta 6 AnyObject Swift 3 thay đổi

Từ 'id' bây giờ nhập khẩu như 'Any' chứ không phải 'AnyObject', bạn có thể thấy lỗi mà bạn đã trước đây thực hiện tra cứu động trên 'AnyObject'.

Tôi đã cố gắng sửa chữa cho một trong hai diễn viên để AnyObject một cách rõ ràng trước khi thực hiện tra cứu năng động, hoặc buộc dàn diễn viên cho một loại đối tượng cụ thể

Nhưng không chắc chắn tôi đang làm nó một cách chính xác - ai đó có thể giúp đỡ xin vui lòng ở đây là mã làm việc ban đầu từ Beta 5

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! SpecialCell 
     let maindata = values[(indexPath as NSIndexPath).row] 
     cell.name.text = maindata["name"] as? String 
     cell.id.text = maindata["id"] as? String 
     //team_id.text = maindata["team_id"] as? String 

     return cell 
    } 

https://www.dropbox.com/s/ln0vx3b9rbywv83/Screen%20Shot%202016-08-18%20at%2014.32.23.png?dl=0

Trả lời

7

Theo beta 6 ghi chú phát hành bạn phải (cầu) đúc để AnyObject

cell.name.text = (maindata["name"] as AnyObject) as? String 

hoặc lực đúc

cell.name.text = maindata["name"] as! String 

Đó là một lý do nữa để thích lớp tùy chỉnh/struct với các loại tài sản khác nhau trên các từ điển thông thường.

+0

thật không may với cả hai tùy chọn mà cả hai đều tạo ra lỗi Type Any has no subscript members. – adamprocter

+0

Vì dữ liệu của tôi là nguồn cấp dữ liệu JSON, tôi không chắc cách sử dụng lớp hoặc cấu trúc tùy chỉnh như bạn đề xuất? – adamprocter

+0

'Giá trị' được khai báo như thế nào? – vadian

0

tôi cần phải thay đổi cách tiếp cận của tôi và mương NSMutableArray (mà tôi rất vui mừng về)

vì vậy tôi khai báo mảng trống rỗng như sau

var values = [[String:AnyObject]]() 

và bật dữ liệu vào nó như vậy bây giờ

values = try! JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.mutableContainers) as! [[String : AnyObject]]; 

một tinh chỉnh nhỏ khác

let maindata = values[(indexPath).row] 

Việc làm đã làm @vadian để nhảy trò chuyện để giúp tôi hiểu câu trả lời của anh ấy về mặt kỹ thuật, chính xác là

+0

Không phải là 'các giá trị' một mảng từ điển? –

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