Tôi đang trong quá trình cố gắng di chuyển một dự án hiện có sang Swift, nhiều bài tập học tập hơn nhưng tôi nghĩ rằng tôi đã gặp phải vấn đề nghĩ rằng nó có thể liên quan đến sự thiếu hiểu biết của tôi về AnyObject.Không thể downcast từ 'AnyObject' trong khi phân tích cú pháp mảng JSON
tôi đã tạo ra một đối tượng bao gồm một số biến và được khởi tạo như:
var customObject:MycustomObject = MYcustomObject()
tôi sau đó sử dụng NSURLConnection để lấy dữ liệu JSON và điều này tất cả dường như được làm việc một cách chính xác như jsonArray đang được dân cư với dữ liệu
jsonArray = NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.MutableContainers, error: &error) as NSArray
tôi sau đó lặp qua mảng và cố gắng để phân tích dữ liệu và đây là nơi tôi đang gặp vấn đề này, cho giá trị mặc định vòng lặp chi tiết để AnyObject.
for details:AnyObject in jsonArray {
parseDetail(details as NSDictionary)
}
Vấn đề liên quan đến integerValue, nó tạo ra một "có thể không nhìn xuống từ 'AnyObject' để không @ objc ...." lỗi
func parseDetail(element: NSDictionary) {
self.customObject.stringValue = element["id"] as String
self.customObject.integerValue = element["type"] as Integer
}
Ngoài ra còn có vẻ là một số khác biệt trong cách NSString & Chuỗi đang hoạt động, sự hiểu biết của tôi cho đến nay là khi sử dụng Swift tôi nên sử dụng kiểu gốc Sting, Float Integer v.v. Nếu tôi sử dụng NSString chuỗiValue hiển thị chính xác trong cửa sổ gỡ lỗi nhưng khi sử dụng kiểu String I nhận được các thông tin sau:
{
core = {
_baseAddress = Builtin.RawPointer = 0x0b227f49
_countAndFlags = 1073741828
_owner = Some {
Some = (instance_type = Builtin.RawPointer = 0x0b227f40 -> 0x006d58f0 (void *)0x006d58c8: __NSCFString)
}
}
}
Xin lỗi, đây là một chút dài nhưng có bất kỳ thông tin nào về luồng không, đây là thử thách tiếp theo của tôi không?
NSThread.detachNewThreadSelector(Selector: parseDetail(), toTarget: self, withObject: nil)
tại sao bạn sử dụng một nsarry thay vì một mảng nhanh? – connor
Bạn đã cố gắng không chỉ định loại trong vòng lặp? (I E., 'Để biết chi tiết trong jsonArray') – Jiaaro
Một câu trả lời cho câu hỏi đầu tiên của bạn cũng được bảo hiểm tại bài viết này: [Làm việc với dữ liệu Cocoa loại - Mảng] (https://developer.apple.com/library/prerelease/ios/documentation/ Swift/Khái niệm/BuildingCocoaApps/WorkingWithCocoaDataTypes.html) đối với câu hỏi thứ hai, [tìm kiếm] (https://developer.apple.com/library/prerelease/ios/search/?q=detachNewThreadSelector) cho thấy không chỉ tài liệu liên quan nhưng cũng mẫu ứng dụng sử dụng phương pháp này. –