objective-cで困っています。
objective-cをトライ&エラーで試しながら学習しているのですが、
下記の内容で行き詰っており、知恵をお借りしたいと思い投稿しました。
現在tml5のcanvasを使ってお絵描きアプリを作りました。このcanvasに書き込んだデータをiPhoneのカメラロールに保存することをトライしています。いろいろ調べてみると「HTML5 CANVASの描画内容をUIImage経由でカメラロールに保存する」という記事をみつけました。http://lab.spec5zigen.com/archives/html5-canvasの描画内容をuiimage経由でカメラロールに保存する/
その記事を参考に
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// UIWebViewのインスタンス化
CGRect rect = self.view.frame;
UIWebView *webView = [[UIWebView alloc]initWithFrame:rect];
// Webページの大きさを自動的に画面にフィットさせる
webView.scalesPageToFit = YES;
// デリゲートを指定
webView.delegate = self;
// URLを指定
NSURL *url = [NSURL URLWithString:@"http://xxxxxxxxxxxxxxxxxxxxxx"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
// リクエストを投げる
[webView loadRequest:request];
// UIWebViewのインスタンスをビューに追加
[self.view addSubview:webView];
}
- (BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType
{
if(![[request.URL.scheme] isEqualToString:@"sp5canvas2app"]){
return YES;
}
NSString * requestString = [[request URL] absoluteString];
NSArray *params = [requestString componentsSeparatedByString:@"data:image/png;base64,"];
// dataFromBase64String
// NSData+Base64 Copyright 2009 Matt Gallagher. All rights reserved.
// http://www.cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html
NSData * decodedData = [NSData dataFromBase64String:[params objectAtIndex:1]];//decode base64 to NSData
UIImage *image = [UIImage imageWithData:decodedData];
UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);//カメラロールに保存
return NO;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
としてみたのですが、
if(![[request.URL.scheme] isEqualToString:@"sp5canvas2app"]){
の行にExpected identifierというエラーが、
NSData * decodedData = [NSData dataFromBase64String:[params objectAtIndex:1]];の行にNo known class method for selector 'dataFromBase64String:'というエラーが
という状況で詰っている状況です。
メソッドの定義や宣言されていないメソッドを使っているなどのエラーということを調べて分かったのですが、objective-cを始めたばかりで初歩的なミスかも知れませんがエラーの対応の仕方がまだまだよくわかっていません。
スキーマなど参考にしたサイトの内容も十分に理解しているのではないのですが、「sp5canvas2app」の部分は自由に変えていいのでしょうか?
解決の仕方を教えていただけないでしょうか?
宜しくお願いします。
お礼
ご回答いただきありがとうございます。 ずっと引きの状態で試行錯誤していて、できないと悩んでおりました。 引きの画面から、初期の画面に戻したらできるようになりました。 引きの状態では、ドラッグ&ドロップができないようになっていました。 新規でプロジェクトを開始して試した時も、引きの画面で試しており絶望しておりました。 挫折が多く楽しさがなかったのですが、 おかげさまで楽しく学習が続けられそうです。 本当にありがとうございました。