こんばんは。
現在簡単な画像アップロードアプリを作成しようと考えております。
先に画像アップロード部分のみを実装したいと考えており、参考サイトより作業しているのですが、use of unresolved identifierエラーで先に進めておりません。
iPhoneアプリは今回初めて作成しており、プロトコルとデリゲートで詰まっているのか"self"が定義できてないとのエラーはなんとなくわかるのですが、どこをどう直していいのか、アドバイスいただければと思い投稿させていただきました。
併せてこの概念は理解しておいたほうがいいというものもあればご教授いただければ幸いです。
swift
1 2import UIKit 3 4class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate{ 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 } 8 9 override func didReceiveMemoryWarning() { 10 super.didReceiveMemoryWarning() 11 } 12 13 @IBAction func uploadButtonTapped(sender: AnyObject) { 14 15 myImageUploadRequest() 16 } 17 18 @IBOutlet weak var myimageView: UIImageView! 19 @IBAction func selectPhotoButtonTapped(sender: AnyObject) { 20 21 let myPickerController = UIImagePickerController() 22 myPickerController.delegate = self; 23 myPickerController.sourceType = UIImagePickerControllerSourceType.PhotoLibrary 24 25 self.presentViewController(myPickerController, animated: true, completion: nil) 26 } 27} 28 29extension NSMutableData { 30 func appendString(string: String) { 31 let data = string.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true) 32 appendData(data!) 33 } 34} 35 36 //画像のアップロード処理 37 func myImageUploadRequest(){ 38 39 //myUrlにはphpファイルのアドレスを入れる 40 let myUrl = NSURL(string:"http://example.com/upload.php") 41 let request = NSMutableURLRequest(URL:myUrl!) 42 request.HTTPMethod = "POST" 43 44 //下記のパラメータはあくまでもPOSTの例 45 let param = [ 46 "userId" : "1234" 47 ] 48 49 let boundary = generateBoundaryString() 50 51 request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type") 52 53 let imageData = UIImageJPEGRepresentation(self.imageForUpload.image, 1) 54 55 if(imageData==nil) { return; } 56 request.HTTPBody = createBodyWithParameters(param, filePathKey: "file", imageDataKey: imageData, boundary: boundary) 57 58 //myActivityIndicator.startAnimating(); 59 60 let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { 61 data, response, error in 62 if error != nil { 63 print("error=\(error)") 64 return 65 } 66 // レスポンスを出力 67 print("******* response = \(response)") 68 let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 69 print("****** response data = \(responseString!)") 70 71 dispatch_async(dispatch_get_main_queue(),{ 72 //アップロード完了 73 }); 74 } 75 task.resume() 76 77 } 78 79 80 func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData { 81 let body = NSMutableData() 82 if parameters != nil { 83 for (key, value) in parameters! { 84 body.appendString("--\(boundary)\r\n") 85 body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n") 86 body.appendString("\(value)\r\n") 87 } 88 } 89 let filename = "user-profile.jpg" 90 let mimetype = "image/jpg" 91 body.appendString("--\(boundary)\r\n") 92 body.appendString("Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n") 93 body.appendString("Content-Type: \(mimetype)\r\n\r\n") 94 body.appendData(imageDataKey) 95 body.appendString("\r\n") 96 body.appendString("--\(boundary)--\r\n") 97 return body 98 } 99 100 func generateBoundaryString() -> String { 101 return "Boundary-\(NSUUID().UUIDString)" 102 } 103 104 //カメラで写真を取る 105 func pickImageFromCamera() { 106 if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera) { 107 let controller = UIImagePickerController() 108 controller.delegate = self 109 controller.sourceType = UIImagePickerControllerSourceType.Camera 110 self.presentViewController(controller, animated: true, completion: nil) 111 } 112 } 113 114 //写真をライブラリから選択 115 func pickImageFromLibrary() { 116 if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.PhotoLibrary) { 117 let controller = UIImagePickerController() 118 controller.delegate = self 119 controller.sourceType = UIImagePickerControllerSourceType.PhotoLibrary 120 self.presentViewController(controller, animated: true, completion: nil) 121 } 122 } 123 //画像が選択されたら呼び出される 124 func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) { 125 if info[UIImagePickerControllerOriginalImage] != nil { 126 let image = info[UIImagePickerControllerOriginalImage] as! UIImage 127 128 //iamgeForUploadというUIImageを用意しておいてそこに一旦預ける 129 self.imageForUpload.image = image 130 self.myImageUploadRequest() 131 } 132 picker.dismissViewControllerAnimated(true, completion: nil) 133 } 134 135

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/07 14:13