2015-09-22 22 views
20

Tôi đã cập nhật mã của mình lên XCode 7 và Swift 2.0, hiện tại một số kiểm tra của tôi không thành công và tôi thấy một danh sách 40 cảnh báo trong bản dựng Thử nghiệm hoàn toàn không liên quan đến mã họ đề cập đến. Thông điệp cảnh báo là:Xcode 7 - Lỗi cast lạ đề cập đến XCUIElement

"Cast From 'XCUIElement' to unrelated type 'String' always fails" 

Và đây là một ví dụ về liên tiếp tạo ra các cảnh báo:

if let protocolStr = JSON["version"] as? String{ 

tôi không sử dụng các bài kiểm tra giao diện người dùng XC chưa ... vì vậy tôi không thể hiểu tại sao mã này đề cập đến lớp đó. Bất kỳ ý tưởng?

Cập nhật: ngày 9 tháng 11 Với XCode 7.1 vấn đề vẫn còn đó.

+0

Tôi gặp sự cố chính xác này, sẽ thấy những gì tôi có thể tìm thấy. – atreat

+0

Để "sửa" nó, tôi đã thay thế kiểu AnyObject bằng [String: AnyObject]. – MatterGoal

Trả lời

2

Tôi nghĩ rằng bạn đã cố định vấn đề của bạn, nhưng trong trường hợp bất cứ ai khác đang xem xét điều này:

Vấn đề là JSON là loại AnyObject Tôi đoán, tại nó không biết rằng bạn có thể chỉ mục nó như một từ điển. Nếu bạn bỏ nó như [String: AnyObject] trước khi nó sẽ không cung cấp cho bạn một lỗi. (như bạn đã chú ý)

chỉnh sửa: Vì lý do tại sao tính năng này cung cấp cho bạn lỗi cụ thể đó, tôi không chắc chắn. Có lẽ là một lỗi.

+1

Dàn diễn viên này không chỉ hoạt động với mục tiêu thử nghiệm. Các mục tiêu ứng dụng chấp nhận diễn viên này mà không có bất kỳ vấn đề. – MatterGoal

+0

Công việc này có hiệu quả không? sửa chữa này đã không làm việc cho tôi. – Sravan

+0

Không, nó không hoạt động. Vấn đề vẫn còn đó, và chúng tôi KHÔNG phải tìm cách giải quyết, Apple ĐÃ ĐỂ sửa lỗi này. – MatterGoal

9

Với Xcode 7.1.1 Không cố định nhưng việc này đã giúp tôi:

if let protocolStr = JSON["version"] as AnyObject as! String { 
+0

Chúng tôi đã gặp sự cố tương tự (Xcode 7.2) và cách giải quyết của bạn cũng hoạt động_ cho chúng tôi! Nhưng tôi không thể lý do tại sao. Lý do của bạn để đúc theo cách này là gì? – epologee

+1

Tôi nghi ngờ rằng nó có liên quan đến mô-đun Kiểm tra giao diện người dùng vì điều này dường như chỉ là vấn đề khi viết các bài kiểm tra đơn vị. Đoán của tôi là có một phần mở rộng trên 'AnyObject' ở đâu đó để thêm subscripting trả về một XCUIElement như là một tiện lợi cho việc viết các kiểm tra UI. Nội dung như https://developer.apple.com/reference/xctest/xcuielementquery/1500776-subscript rò rỉ vào AnyObject ... –

1

Tất cả tôi phải làm là gõ chuỗi chìa khóa (“phiên bản”) để NSString như vậy:

if let protocolStr = JSON["version" as NSString] as? String { 
    … 
} 
+0

bạn không thể chuyển đổi thành NSString như thế này nữa –

1

Xcode 7.2, nhanh chóng 2,2

Hãy thử như

này
if let protocolStr = JSON.valueForKey("version") as? String{ 
    //your code 
} 
Các vấn đề liên quan