(참고: http://ios-blog.co.uk/tutorials/quick-tips/quick-tip-converting-nsstring-to-nsdata/ )


NSString 변수를 NSData 변수로 값타입 변환하는 방법입니다.

jSon 의 serialization 을 하기 위해선 값 타입을 바꿔서 사용해야 하는경우가 있습니다.



NSString 에서  NSData 로 변환


NSData *data = [json dataUsingEncoding:NSUTF8StringEncoding];


//null 인경우를 대비해서 아래와 같이 적어줍니다.\0 바이트를 없애주는 라인입니다.

// 개인적으로는 잘 사용하지는 않고 있습니다. 

data = [data [subdataWithRange:NSMakeRange(0, [json length]-1)]];


   

NSData 에서 NSString 로 변환


NSString* newStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];


혹은


NSString* newStr2 = [NSString stringWithUTF8String:[data bytes]];



저작자 표시
신고
Creative Commons License
Creative Commons License

posted by youp_han matrim


NSArry 내에 있는 내용을 NSLog 로 찍어 보려고 할때 간단하게 2 가지 방법이 있습니다.


1) NSLog(@"shopDetail = %@", shopDetail);


2) for 루핀 사용하기         

for (NSString *str in shopDetail) {

    NSLog(@"shopDetail = %@", str);

}


1) 번을 사용하든, 2)번을 사용하든 결과물은 같습니다.

2015-07-07 23:49:11.250 redCat[1471:24953] shopDetail = (

        {

        address = "XXXXX@gmail.com";

        businessHour = "11:00(11AM) ~ 20:00(8PM), \Uc2e0\Uc815,\Uad6c\Uc815\Uc5f0\Ud734,\Ucd94\Uc11d\Uc5f0\Ud734,\Ud06c\Ub9ac\Uc2a4\Ub9c8\Uc2a4\Ub0a0\Uc740 \Uc27d\Ub2c8\Ub2e4.";

        city = "\Uc11c\Uc6b8";

        country = "South Korea";

        description = "XXXXX @Apkoojung";

        latitude = "37.523809";

        lin2 = "\Uc6cc\Ud130\Uc2a4\Ud2b8\Ub9ac\Ud2b8";

        line1 = "\Uac15\Ub0a8\Uad6c \Uc2e0\Uc0ac\Ub3d9 550-14 1\Uce35";

        longitude = "127.024297";

        name = "\Uc555\Uad6c\Uc815\Uc810";

        number = "+82-2-111-ZZZZ";

        seqNo = 2;

        shopCode = 002;

    }

)


저작자 표시
신고
Creative Commons License
Creative Commons License

posted by youp_han matrim


UIWebview 를 사용하여 iOS 앱 화면에 모바일웹 화면을 띄우는 방법은 간단합니다.

스토리 보드를 이용한 방법이 아래 링크에 잘 나와있습니다. 소스 코드만 봐도 간단하지요?

- (void)viewDidLoad

{

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    [self goToURL:@"https://mobile.twitter.com/waterstreetjr"];

}


// displays the URL

-(void)goToURL:(NSString*) fullURL{

    NSURL *url = [NSURL URLWithString:fullURL];

    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

    [_webView loadRequest:requestObj];

}


이렇게 UIWebview 를 만들고 나서...


1. 화면이 나오면 로딩이 끝날 때까지 흰색화면으로 남게 되는데요, 음.. 아래 그림처럼 로딩 이미지가 떠주면 어떨까 싶어서 추가해봤습니다.



#import <UIKit/UIKit.h>


@interface HomeViewController : UIViewController<UIWebViewDelegate>

{

     UIActivityIndicatorView* loadingIndicator;

}

@property (weak, nonatomic) IBOutlet UIWebView *webView;

@property (strong, nonatomic) UIActivityIndicatorView *loadingIndicator;


-(void)goToURL:(NSString*) fullURL;

@end


- (void)viewDidLoad

{

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    [_webView setDelegate:self];

    [self addLoadingIndicatorToView];

    [self goToURL:@"https://mobile.twitter.com/waterstreetjr"];

}


// add loading indicator

-(void)addLoadingIndicatorToView{

    loadingIndicator= [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

    [loadingIndicator setCenter:CGPointMake(self.view.frame.size.width/2, self.view.frame.size.height/2)];

    [self.view addSubview:loadingIndicator];


}


// displays the URL

-(void)goToURL:(NSString*) fullURL{

    NSURL *url = [NSURL URLWithString:fullURL];

    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

    [_webView loadRequest:requestObj];

}


- (void)webViewDidStartLoad:(UIWebView *)webView{

    NSLog(@"webViewDidStartLoad");

    [loadingIndicator startAnimating];

}


- (void)webViewDidFinishLoad:(UIWebView *)webView{

    NSLog(@"webViewDidFinishLoad");

    [loadingIndicator stopAnimating];

}


- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{

    NSLog(@"didFailLoadWithError");

}


동작이 잘 되는 부분은 확인 해 봤습니다. 


2) 로딩 화면이 보이지 않고, 로딩이 끝난 후에 보여지면 어떨까 생각해봤습니다. 예를 들면 테이블 뷰가 나오고 그 중에서 다음 화면이 웹뷰인 셀이 있습니다. 눌렀을 시 UIwebview 로 넘어갈 때 로딩이 끝난뒤 넘어가게 할 수도 있습니다.



넘어가기 전 테이블 뷰에서 다음 화면인 웹 뷰로 가는 셀을 터치 했을 경우, pushViewController 를 부르기 전에, 웹뷰 를 미리 로딩을 할 수 있도록 합니다.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { // check indexPath... myWebView = [[MyWebViewController alloc] init]; myWebView.delegate = self; [myWebView preLoadView]; }

웹뷰가 로딩이 끝나면 다음 화면으로 뷰가 넘어가게 됩니다.

- (void)webViewDidFinishLoad:(UIWebView *)webView { [self.navigationController pushViewController:myWebView animated:YES]; [myWebView release]; }

아직 테스트 된 코드는 아니지만, 실제 코드 적용 과 함께 테스트 후 영상을 올리도록 하겠습니다. 

저작자 표시
신고
Creative Commons License
Creative Commons License

posted by youp_han matrim


참고 : http://www.raywenderlich.com/5492/working-with-json-in-ios-5


기본적인 컨셉은 위 링크에서 익혔고..


실질적인 iOS7 에서의 코딩은 아래 링크를 보고 연습했습니다.


따라하기 : http://thedarkdev.blogspot.com.au/2013/09/web-service-apps-in-ios7-json-with.html


좀더 잘 설명되어 있는 곳 : http://dadabeatnik.wordpress.com/2013/11/01/parsing-json-in-ios/


JSON data in table formatJSON data



좀더 정리되면 포스팅 업데이트 하도록 하겠습니다.

저작자 표시
신고
Creative Commons License
Creative Commons License

posted by youp_han matrim


테이블뷰 리로드시 에니메이션 넣는 방법

참고싸이트 : http://iosdevelopmenttip.blogspot.com.au/2013/01/uitableview-reload-table-view-with.html


//아래 코드를 리로드 하는 부분에 넣으시면 됩니다.
dispatch_async(dispatch_get_main_queue(), ^{
        [UIView transitionWithView:<"TableName">
                          duration:0.1f
                           options:UIViewAnimationOptionTransitionCrossDissolve
                        animations:^(void) {
                            [<"TableName"> reloadData];
                        } completion:NULL];       
    });

저작자 표시
신고
Creative Commons License
Creative Commons License

posted by youp_han matrim


간단한 로그인 화면 만들기 샘플입니다.


스텝바이스텝 으로 xcode5, ios7 용으로 스토리보드를 이용하여 로그인 화면 만드는 방법이 자세히 나와있습니다.


http://dipinkrishna.com/blog/2013/12/ios-login-screen-tutorial-xcode-5-ios-7-storyboard-json/


저작자 표시
신고
Creative Commons License
Creative Commons License

posted by youp_han matrim


iOS 에서 사용할 Json 파서를 찾다 가장 빠르다고 평이 나 있는 JSONKit  찾아 소개합니다.


Objective-C 로 만들어진 json 파서 중에선 가장 빠르고 시리얼라이즈도 가장 바르게 측정되었네요.

Deserialize from JSONSerialize to JSON


저작자 표시
신고
Creative Commons License
Creative Commons License

posted by youp_han matrim

objective-C 로 iOS 에서 xcode 5 로 간단한 테이블 뷰 만드는 방법 설명입니다.

금방 따라할 듯 싶어, 링크만 걸어 둡니다.



SimpleTable App

저작자 표시
신고
Creative Commons License
Creative Commons License

posted by youp_han matrim



폰갭 phoneGap 용 MIT 라이센스 달려나온 push notification 입니다.

하지만 iOS 용만 사용하면 될것 같아서, 참고해 보려고 합니다.


https://github.com/phonegap-build/PushPlugin.git


소스 테스트 이후, git hub 에 따로 iOS 용 공개하려고 합니다. 위의 링크 소스와 같을 듯 싶지서도.. :)


저작자 표시
신고
Creative Commons License
Creative Commons License

posted by youp_han matrim


Failed to build gem native extension


아이폰 개발을 하다보니, 요즘 이쁜 오픈소스 UI 들을 사용하려고 하는데, cocoapods 라는 Gem 을 설치 해야 해서, 사용하고 있는 OS X Mountain Lion (이하 마운틴 라이온) 에 설치하려고 하니 오류가 났습니다. 


Failed to build gem native extension


해결책은 : http://www.zlu.me/blog/2012/02/21/install-native-ruby-gem-in-mountain-lion-preview/ 잘 나와있습니다.


1. xcode 에서 Command Line Tools 를 설치 한다. 




아래 내용은, 터미널 로그를 그대로 스크린 샷을 떴는데요, 

처음에 sudo gem install cocoapods 를 했을 시 나오는 오류입니다.


2. 터미널에서 아래의 명령어를 실행해 줍니다.

ln -s /usr/bin/gcc /usr/bin/gcc-4.2

gcc-4.2 의 sym 링크를 만들어 주는 명령어 입니다.


3. sudo gem install cocoapods 명령어를 재실행 하면 재대로 설치됩니다.




저작자 표시
신고
Creative Commons License
Creative Commons License

posted by youp_han matrim



티스토리 툴바