iOS를 사용하여 웹 사이트에서 JSON을 가져와 그대로 저장하는 방법은 무엇입니까?

iospuzzled

웹 사이트에서 JSON 파일의 내용을 가져온 다음 해당 내용을 저장하는 방법을 알아 내려고했습니다. 실제 {...} 객체를 iOS의 파일 (XCode 포함)에 저장합니다. iOS를 처음 접했기 때문에 온라인으로 보일 것이라고 생각했지만 적용 가능한 것은 없습니다. 콘텐츠의 바이트 크기가 아닌 JSON 파일 콘텐츠 자체를 실제로 얻는 방법은 무엇입니까?

통화 설정 방법은 다음과 같습니다.

func test() {
    let url = NSURL(string: "https://www.somesite.com/file.json")
    let request = NSURLRequest(url: url! as URL)
    let session = URLSession.shared
    var json: Any
    let task = session.dataTask(with: request as URLRequest, completionHandler: { data, response, error -> Void in
        if let data = data {
            **[PROBLEM APPEARS TO BE HERE]** json = try JSONSerialization.jsonObject(with: data, options[])
            let dataToSave = try JSONSerialization.data(withJSONObject: json, options:[])
            print(dataToSave)
        }
    })
    task.resume()
}

또한 NSString (data : data, encoding : String.Encoding.utf8.rawValue) 와 같은 것을 시도했지만 파일에 저장할 때 읽을 때 네이티브 JSON 디코더에서 인식하지 못하는 콘텐츠의 이스케이프 된 문자열을 생성합니다. 파일.

iospuzzled

지금까지 몇 주 동안 iOSXCode 11.5빠져 들었지만 위에 지정된 질문에 대한 답을 얻은 것 같습니다. 간단히 말해, 디스크 기반 JSON 읽기 및 쓰기 동작은 비동기 웹 요청으로 동일한 작업을 시도하는 것과 크게 다르며 웹 사이트 JSON 콘텐츠를 로컬 디스크에 저장하려면 "도우미"기능을 연결해야합니다.

웹 요청을 만드는 기본 기능 :

func test1() {
    var targetUrl = NSURL(string: "https://www.somesite.com/file.json")
    let request = NSURLRequest(url: targetUrl! as URL)
    let session = URLSession.shared
    let task = session.dataTask(with: request as URLRequest, completionHandler: { data, response, error -> Void in
        if let data = data {
            /* To avoid errors about "Invalid conversion from throwing function of type '(Data?,URLResponse?,Error?) throws -> Void' to non-throwing function type '(Data?,URLResponse?,Error?) -> Void'", when attempting to manipulate data here, pass data containing the file content to a helper function. */
            self.test2Helper(contentData: data.self)
        }
    })
    task.resume()
    return
}

웹 사이트에서 JSON 콘텐츠를 저장하기위한 도우미 기능 :

func test2Helper(contentData: Data) {
    /* Retrieve filepath information for app's Documents folder on device */
    let appDocumentsFolder = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
    let fullPath = appDocumentsFolder.appendingPathComponent("website").appendingPathExtension("json")
    /* For manually opening the file for verification, show the path */
    print(fullPath)
    /* Save the JSON content to the file */
    do {
        /* Build JSON Data Object */
        let json = try JSONSerialization.jsonObject(with: contentData)
        /* Save JSON Data to Documents */
        let data = try JSONSerialization.data(withJSONObject: json, options: [])
        try data.write(to: fullPath, options: [])
        /* For testing, show completion */
        print("JSON content from website saved to disk.")
    }
    catch {
        print(error)
    }
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

wget을 사용하여 웹 페이지의 특정 태그 사이에서 텍스트를 가져 오는 방법은 무엇입니까?

분류에서Dev

json을 반환하고 SQL Server를 사용하여 테이블에 데이터를 저장하는 저장 프로 시저를 사용하여 웹 서비스를 호출하는 방법은 무엇입니까?

분류에서Dev

웹 사이트가 ASP.Net에서 때때로 작동하지 않을 때 웹 사이트의 로그를 관리하는 방법은 무엇입니까?

분류에서Dev

웹 사이트에서 JavaScript를 사용하여 JSON을 얻는 방법은 무엇입니까?

분류에서Dev

웹 브라우저를 사용하여 URL이있는 웹 사이트에서 웹 페이지를 가져 오는 방법은 무엇입니까?

분류에서Dev

UWP에서 C #을 사용하여 웹 페이지를 html 파일로 저장하는 방법은 무엇입니까?

분류에서Dev

웹 사이트 URL에서 이미지를 가져와 PC의 폴더에 모든 이미지를 저장하는 방법은 무엇입니까?

분류에서Dev

userId를 전화 번호로 갖는 사용자의 모든 이름을 가져 와서 목록보기에 저장하는 방법은 무엇입니까?

분류에서Dev

웹 사이트에 기억 자격 증명 기능이 없을 때 Firefox에서 로그인 및 암호를 저장하는 방법은 무엇입니까?

분류에서Dev

브라우저에서 Flash 클라이언트를 사용하여 웹캠을 RTMP 서버로 스트리밍하는 방법은 무엇입니까?

분류에서Dev

curl을 사용하여 권한이 필요한 웹 사이트에서 데이터를 가져 오는 방법은 무엇입니까?

분류에서Dev

동일한 도메인을 가진 웹 사이트와 웹 응용 프로그램을 사용하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

사용자로부터 int 입력 수를 가져와 동시에 사용자 입력을 저장하는 방법은 무엇입니까?

분류에서Dev

Itextsharp를 사용하여 MySQL에서 UTF8 문자를 가져와 C # 프로그램의 PDF에 저장하는 방법은 무엇입니까?

분류에서Dev

jquery PHP를 사용하여 동적으로 추가 된 행을 저장하는 방법은 무엇입니까?

분류에서Dev

모든 라디오 버튼 값을 Json으로 가져오고 로컬 저장소를 사용하여로드하는 방법은 무엇입니까?

분류에서Dev

Hashmap을 사용하여 JSON 웹 서비스에서 축소판 이미지를 가져오고 표시하는 방법은 무엇입니까?

분류에서Dev

php curl을 사용하여 웹 사이트 (linkshare 등)에 로그인하는 방법은 무엇입니까?

분류에서Dev

셸에서 CURL을 사용하여 CSRF 지원 웹 사이트에서 https를 통해 파일을 업로드하는 방법은 무엇입니까?

분류에서Dev

HTML을 사용하여 표를 여러 웹 페이지에로드하는 방법은 무엇입니까?

분류에서Dev

Selenium Python을 사용하여 ID로 웹 사이트 요소를 찾는 방법은 무엇입니까?

분류에서Dev

Chrome을 사용하여 데스크톱 / 폴더에 웹 사이트 바로 가기를 만드는 방법은 무엇입니까?

분류에서Dev

Chrome을 사용하여 데스크톱 / 폴더에 웹 사이트 바로 가기를 만드는 방법은 무엇입니까?

분류에서Dev

웹 페이지에서 생성 된 목록을 Python을 사용하여 호스트 컴퓨터로 가져 오는 방법은 무엇입니까?

분류에서Dev

PHP를 사용하여 프로그래밍 방식으로 Google 웹 마스터 도구에 사이트 맵을 제출하는 방법은 무엇입니까?

분류에서Dev

Hyperledger Fabric 웹 앱에 대한 사용자 로그인을 가져 오는 방법은 무엇입니까?

분류에서Dev

ETL을 사용하여 CSV에서 Edge를 OrientDB 그래프로 가져 오는 방법은 무엇입니까?

분류에서Dev

뷰티플 수프를 사용하여 웹 사이트에서 <script> 태그의 함수 문자열을 추출하는 방법은 무엇입니까?

분류에서Dev

asp.net에서 웹 응용 프로그램을 사용할 때 데이터를 오프라인으로 저장하는 가장 좋은 방법은 무엇입니까?

Related 관련 기사

  1. 1

    wget을 사용하여 웹 페이지의 특정 태그 사이에서 텍스트를 가져 오는 방법은 무엇입니까?

  2. 2

    json을 반환하고 SQL Server를 사용하여 테이블에 데이터를 저장하는 저장 프로 시저를 사용하여 웹 서비스를 호출하는 방법은 무엇입니까?

  3. 3

    웹 사이트가 ASP.Net에서 때때로 작동하지 않을 때 웹 사이트의 로그를 관리하는 방법은 무엇입니까?

  4. 4

    웹 사이트에서 JavaScript를 사용하여 JSON을 얻는 방법은 무엇입니까?

  5. 5

    웹 브라우저를 사용하여 URL이있는 웹 사이트에서 웹 페이지를 가져 오는 방법은 무엇입니까?

  6. 6

    UWP에서 C #을 사용하여 웹 페이지를 html 파일로 저장하는 방법은 무엇입니까?

  7. 7

    웹 사이트 URL에서 이미지를 가져와 PC의 폴더에 모든 이미지를 저장하는 방법은 무엇입니까?

  8. 8

    userId를 전화 번호로 갖는 사용자의 모든 이름을 가져 와서 목록보기에 저장하는 방법은 무엇입니까?

  9. 9

    웹 사이트에 기억 자격 증명 기능이 없을 때 Firefox에서 로그인 및 암호를 저장하는 방법은 무엇입니까?

  10. 10

    브라우저에서 Flash 클라이언트를 사용하여 웹캠을 RTMP 서버로 스트리밍하는 방법은 무엇입니까?

  11. 11

    curl을 사용하여 권한이 필요한 웹 사이트에서 데이터를 가져 오는 방법은 무엇입니까?

  12. 12

    동일한 도메인을 가진 웹 사이트와 웹 응용 프로그램을 사용하는 가장 좋은 방법은 무엇입니까?

  13. 13

    사용자로부터 int 입력 수를 가져와 동시에 사용자 입력을 저장하는 방법은 무엇입니까?

  14. 14

    Itextsharp를 사용하여 MySQL에서 UTF8 문자를 가져와 C # 프로그램의 PDF에 저장하는 방법은 무엇입니까?

  15. 15

    jquery PHP를 사용하여 동적으로 추가 된 행을 저장하는 방법은 무엇입니까?

  16. 16

    모든 라디오 버튼 값을 Json으로 가져오고 로컬 저장소를 사용하여로드하는 방법은 무엇입니까?

  17. 17

    Hashmap을 사용하여 JSON 웹 서비스에서 축소판 이미지를 가져오고 표시하는 방법은 무엇입니까?

  18. 18

    php curl을 사용하여 웹 사이트 (linkshare 등)에 로그인하는 방법은 무엇입니까?

  19. 19

    셸에서 CURL을 사용하여 CSRF 지원 웹 사이트에서 https를 통해 파일을 업로드하는 방법은 무엇입니까?

  20. 20

    HTML을 사용하여 표를 여러 웹 페이지에로드하는 방법은 무엇입니까?

  21. 21

    Selenium Python을 사용하여 ID로 웹 사이트 요소를 찾는 방법은 무엇입니까?

  22. 22

    Chrome을 사용하여 데스크톱 / 폴더에 웹 사이트 바로 가기를 만드는 방법은 무엇입니까?

  23. 23

    Chrome을 사용하여 데스크톱 / 폴더에 웹 사이트 바로 가기를 만드는 방법은 무엇입니까?

  24. 24

    웹 페이지에서 생성 된 목록을 Python을 사용하여 호스트 컴퓨터로 가져 오는 방법은 무엇입니까?

  25. 25

    PHP를 사용하여 프로그래밍 방식으로 Google 웹 마스터 도구에 사이트 맵을 제출하는 방법은 무엇입니까?

  26. 26

    Hyperledger Fabric 웹 앱에 대한 사용자 로그인을 가져 오는 방법은 무엇입니까?

  27. 27

    ETL을 사용하여 CSV에서 Edge를 OrientDB 그래프로 가져 오는 방법은 무엇입니까?

  28. 28

    뷰티플 수프를 사용하여 웹 사이트에서 <script> 태그의 함수 문자열을 추출하는 방법은 무엇입니까?

  29. 29

    asp.net에서 웹 응용 프로그램을 사용할 때 데이터를 오프라인으로 저장하는 가장 좋은 방법은 무엇입니까?

뜨겁다태그

보관