質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

336閲覧

メソッドの役割がわからない

退会済みユーザー

退会済みユーザー

総合スコア0

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/06/13 12:04

Swiftのメソッドの役割がわからないです。
今、サーバーに画像をアップロードするメソッド群を作っています。

func myImageUploadRequest() { let myUrl = NSURL(string: "http://www.swiftdeveloperblog.com/http-post-example-script/"); //let myUrl = NSURL(string: "http://www.boredwear.com/utils/postImage.php"); let request = NSMutableURLRequest(URL:myUrl!); request.HTTPMethod = "POST"; //ユーザーごとに割り振りたい let param = [ "firstName" : "Sergey", "lastName" : "Kargopolov", "userId" : "9" ] let boundary = generateBoundaryString() request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type") let imageData = UIImageJPEGRepresentation(myImageView.image!, 1) if(imageData==nil) { return; } request.HTTPBody = createBodyWithParameters(param, filePathKey: "file", imageDataKey: imageData!, boundary: boundary) myActivityIndicator.startAnimating(); let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in if error != nil { print("error=\(error)") return } // You can print out response object print("******* response = \(response)") // Print out reponse body let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) print("****** response data = \(responseString!)") do { let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary print(json) dispatch_async(dispatch_get_main_queue(),{ self.myActivityIndicator.stopAnimating() self.myImageView.image = nil; }); }catch { print(error) } } task.resume() } func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData { let body = NSMutableData(); if parameters != nil { for (key, value) in parameters! { body.appendString("--\(boundary)\r\n") body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n") body.appendString("\(value)\r\n") } } let filename = "user-profile.jpg" let mimetype = "image/jpg" body.appendString("--\(boundary)\r\n") body.appendString("Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n") body.appendString("Content-Type: \(mimetype)\r\n\r\n") body.appendData(imageDataKey) body.appendString("\r\n") body.appendString("--\(boundary)--\r\n") return body } func generateBoundaryString() -> String { return "Boundary-\(NSUUID().UUIDString)" } } extension NSMutableData { func appendString(string: String) { let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) appendData(data!) } }

上記のメソッドの

let boundary = generateBoundaryString()

のgenerateBoundaryString() の役割と

request.HTTPBody = createBodyWithParameters(param, filePathKey: "file", imageDataKey: imageData!, boundary: boundary)

のcreateBodyWithParameters の役割と

let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in if error != nil { print("error=\(error)") return } // You can print out response object print("******* response = \(response)") // Print out reponse body let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) print("****** response data = \(responseString!)") do { let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary print(json) dispatch_async(dispatch_get_main_queue(),{ self.myActivityIndicator.stopAnimating() self.myImageView.image = nil; }); }catch { print(error) } } task.resume() }

のコードの役割がわかりません。
Swiftはレファレンスがないのでしょうか?
(調べたいにも調べられず)
上記の3つの部分の役割は何なのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

おそらくこのコードのネタ元はこちらでしょうか?
Image upload example with Swift and PHP

swiftのリファレンスはこのような感じのものがあります。
https://developer.apple.com/documentation/foundation/nsuuid/1416585-uuidstring

投稿2017/06/13 12:57

idonotknow

総合スコア74

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/06/13 13:01

はい、元ネタはそれです。 リファレンスにはメソッドの説明などはないのでしょうか?
idonotknow

2017/06/13 13:07 編集

どのメソッドについてでしょうか?generateBoundaryStringやcreateBodyWithParametersは記事を書いた方の自作関数ですし、NSURLSession.sharedSession().dataTaskWithRequest(request) {...}についてもリファレンスに各々のメソッドについてなら載っているとは思いますが・・・?
退会済みユーザー

退会済みユーザー

2017/06/13 13:20

ありました!ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問