Video: How to learn to code (quickly and easily!) 2025
Bởi Neal Goldstein
Khi bạn nói về chương trình đám mây trên iOS, bạn đang nói đến hai điều: iCloud (do Apple thực hiện và cho phép bạn đồng bộ dữ liệu giữa các thiết bị) và dịch vụ web (cho phép bạn có một số quá trình xử lý ứng dụng của bạn được thực hiện bởi máy tính từ xa đâu đó ở giữa những người hiểu biết ở đâu). Các dịch vụ Web dựa vào các cách xử lý các yêu cầu dịch vụ web hiệu quả - yêu cầu của người dùng về dữ liệu được lưu trữ trong đám mây. Hai định dạng hiệu quả nhất (bây giờ là ít nhất) là XML và JSON. Các mẹo bạn sẽ tìm thấy ở đây chỉ cho bạn cách thiết lập yêu cầu web (sử dụng dịch vụ web Google Geocoder làm ví dụ) và cách phân tích cú pháp cả phản hồi XML và phản hồi JSON để bạn có thể sử dụng dữ liệu dịch vụ web trong ứng dụng của bạn.
Ví dụ: Dịch vụ Web Gốc Mã của Google cung cấp cho bạn một sự lựa chọn.
Nếu bạn muốn trả lời ở định dạng XML, bạn sẽ sử dụng
// bản đồ. googleapis. com / maps / api / geocode / xmlNếu bạn muốn phản hồi trong JSON, bạn sẽ sử dụng
// bản đồ. googleapis. com / maps / api / geocode / json? paremters
Trong khi có ý định tương tự, cách bạn lấy thông tin ra khỏi cấu trúc dữ liệu XML và JSON là khá khác nhau trong thực hiện.
Phân tích cú pháp XML Đáp ứng từ Cloud
Khi bạn sử dụng một dịch vụ web dựa trên đám mây, phản hồi của bạn có thể là trong XML. Nếu, khi làm việc với dịch vụ web dựa trên đám mây của bạn, bạn phải nhập thông tin dưới đây vào trình duyệt
// maps của trình duyệt web của bạn. googleapis. com / maps / api / geocode / xml? sensor = true & address = EmpireState Building &
bạn sẽ lấy lại được một số XML - ví dụ:… 40. 7484395 -73. 9856709 …
Vì XML không thể hiện chính xác theo những cách dễ hiểu, sau đó bạn phải phân tích cú pháp XML nó mang lại cho bạn.
Ghi nhớ XML được tạo thành từ các phần tử có thẻ bắt đầu và kết thúc. Để có được thông tin thông qua iCloud, bạn sử dụng lớp NSXMLParser sử dụng mẫu ủy quyền. Dưới đây là cách hoạt động:
NSXMLParser * xmlParser = [[NSXMLParser alloc] initWithData: data]; [xmlParser setDelegate: tự]; [xmlParser parse];
Nó chỉ ra rằng có bốn phương pháp ủy nhiệm NSXMLParser bạn sẽ được triển khai để phân tích một cấu trúc dữ liệu XML:
parser: didStartElement: namespaceURI: qualifiedName: các thuộc tính: cho phép bạn biết rằng trình phân tích cú pháp đã tìm thấy một phần tử với một thẻ, ví dụ và tùy thuộc vào bạn để trích xuất dữ liệu trong trình phân tích cú pháp: foundCharacters: method.
Phân tích phản hồi JSON từ CloudKhi bạn sử dụng dịch vụ web dựa trên đám mây, phản hồi của bạn có thể là trong JSON. Nếu, khi làm việc với dịch vụ web dựa trên đám mây của bạn, bạn phải nhập thông tin dưới đây vào trình duyệt
// maps của trình duyệt web của bạn. googleapis. com / maps / api / geocode / json? sensor = true & address = Empire
State Building &bạn sẽ nhận được một số JSON - ví dụ sau, ví dụ
kết quả: [{… geometry {{giới hạn:
{ > đông bắc:
( lat: 40. 7489545, lng: -73. 98483449999999}, phía tây nam: ( lat: 40. 7479245, lng: -73. 9865073}}, vị trí: ( lat: 40. 7484395, lng: -73. 9856709}, …} Vì JSON chỉ là bí mật như XML, sau đó bạn sẽ phải phân tích bất cứ điều gì mà JSON cung cấp cho bạn.Tuy nhiên, phân tách cú pháp JSON hoàn toàn khác so với việc phân tích cú pháp XML. JSON được xây dựng dựa trên hai cấu trúc mà bạn quen thuộc với - mảng và từ điển. Ví dụ JSON sau sử dụng cả hai: NSError * error = nil; NSDictionary * responseDict = [NSJSONSerialization JSONObjectWithData: data các tùy chọn: NSJSONReadingMutableContainers lỗi: & lỗi];
Khi bạn phân tích cú pháp JSON, bạn có vài lựa chọn mà bạn có thể thiết lập như sau:
NSJSONReadingMutableContainers: Các mảng và từ điển bạn nhận được trở lại có thể thay đổi để bạn có thể sửa đổi chúng. Mặc định là không thay đổi.NSJSONReadingMutableLeaves: Các chuỗi bạn nhận được trở lại có thể thay đổi để bạn có thể sửa đổi chúng. Mặc định là không thay đổi.
NSJSONReadingAllowFragments: Chỉ định rằng trình phân tích cú pháp nên cho phép các đối tượng cấp cao nhất mà không phải là mảng hoặc từ điển. Mặc định yêu cầu các đối tượng cấp cao nhất của JSON là một mảng hoặc từ điển.
Trong trường hợp này, bạn có thể lấy vị trí lat và lng bằng cách làm
NSDictionary * result = [results objectAtIndex: 0]; NSDictionary * geometry = [result objectForKey: @ "hình học"]; NSDictionary * location = [geometry objectForKey: @ "vị trí"]; vĩ độ = [giá trị vị tríKhách hàng: @ "lat"]; kinh độ = [giá trị vị tríKhuyết trình: @ "lng"];