반응형

iBooks 의 SWIFT 4를 통해 언어 공부 중입니다. 이때 사용된 책 속의 코드 및 연습문제 등의 코드 로그입니다.



아래 코드들은 Github 에서도 다운받을 수 있습니다.

SWIFT_Playground_Excersice: https://github.com/youp-han/SWIFT_Playground_Excersice


코드 로그 입니다.


//Day 1


//: Playground - noun: a place where people can play


import UIKit


//Simple Values

//decraring variables

var str = "Hello, playground"

let implictInteger = 80

let explicit:Double = 80

let explicit1: Float = 80


let label = "the width is"

let width = 83

let widthLabel = label + String(width)


print("hello world")


let apples = 3

let oranges = 4


let applesSummary = "I have \(8.0) apples"

let fruitSummary = "I have \(8.0 + 10.0) pieces of fruit"


//array and dictionary

var shoppingList = ["catfish", "water", "tulips", "blue paint"]

shoppingList[1] = "bottle of water"


var occupations = [

    "Malcolm" : "Captain",

    "Kaylee" : "Mechanic",

]

occupations["Jayne"] = "Public Relations"


let emptyArray = [String]()

let emptyDictionary = [String:Float]()


//Control Flow

//for loop & if else

let individualScores = [12, 14, 25, 34, 134]

var teamScore = 0

for score in individualScores {

    if score > 30 {

        teamScore+=3

    } else {

        teamScore+=1

    }

}

print(teamScore)


//optional variable

var optionalString: String? = "Hello"

print(optionalString == nil)

var optionalName: String? = "John Appleseed"

var greeting = "Hello!"


if let name = optionalName {

    greeting = "hello, \(name)"

}


let nickName: String? = nil

let fullName: String = "John Appleseed"

let informalGreeting = "Hi \(nickName ?? fullName)"


//switch

let vegetable = "red pepper"

switch vegetable{

case "celery":

    print("wawa")

case "cucumber", "watercress":

    print("wwwwww")

case let x where x.hasSuffix("pepper"):

    print("wow found red pepper")

default:

    print("default")

}


//dictionary

let interestingNumbers = [

    "prime":[2,3,5,7,11,13],

    "fibonacci":[1,1,2,3,5,8],

    "square":[1,4,9,16,25],

]


var largest = 0


for (kind, numbers) in interestingNumbers {

    for number in numbers {

        if number > largest {

            largest = number

        }

        print(kind + ":" + String(largest))

    }

}

print(largest)



//while

var n=2

while n<100 {

    n *= 2

}

print(n)


var m = 2

repeat {

    m *= 2

} while m < 100


print (m)


// range

var total = 0


// .. vs =< ...

for i in 0..<4 {

    total += i

    print (total)

}

print (total)


//function and Closure

//function

func greet(person: String, day: String) -> String {

    return "Hello \(person), Today is \(day)."

}

greet(person: "Bob", day: "Friday")


func greetWithSpecial(person: String, special: String)->String{

    return "Hello \(person), Today's Lunch Special is \(special)."

}

greetWithSpecial(person: "Mike", special: "Meat Balls")


// _ <-- 추가 하여 함수 호출 시 argument label 를 쓰지 않게 한다.

func greet(_ person: String, day: String) -> String {

    return "Hello \(person), Today is \(day)."

}

greet("Sam", day: "Saturday")



//tuple , returns multiple results

func calculateStatistics(scores:[Int]) -> (min: Int, max: Int, sum: Int){

    var min = scores[0]

    var max = scores[0]

    var sum = 0

    

    for score in scores {

        

        if score > max {

            max = score

        } else if score < min {

            min = score

        }

        sum += score

    }

    return (min, max, sum)

}


let statistics = calculateStatistics(scores: [1,2,3,4,5,6,7,8,9,10])

print(statistics.min)

print(statistics.max)

print(statistics.sum)

print(statistics.0)

print(statistics.1)

print(statistics.2)


func sumOf(numbers: Int...)-> Int {

    var sum = 0

    for number in numbers {

        sum += number

    }

    return sum

}


sumOf()

sumOf(numbers: 1,2,3,4,5,6,7,8,9,10)


//experiment

func averageOf(numbers: Double...)-> Double{

    var average : Double = 0.0

    var counter : Double = 0.0

    var sum : Double = 0.0

    

    for number in numbers {

        sum += number

        counter += 1.0

    }

    if counter != 0.0 {

        average = sum / counter

    } else {

        average = 0.0

    }

    

    print("Sum = \(sum)")

    print("counter = \(counter)")

        

    return average

}


averageOf()

averageOf(numbers: 1,2,3,4,5,6,7,8,9,10)


func returnFifteen() -> Int{

    var y = 10

    

    func add(){

        y+=5

    }

    add()

    return y

}


returnFifteen()


반응형

'초짜 IT보이 서바이벌 스토리 > iOS - swift' 카테고리의 다른 글

[swift] code log, day 4  (0) 2017.09.26
[swift] code log, day 3  (0) 2017.09.25
[swift] code log, day 2  (0) 2017.09.24
[swift] #SWIFT #4 언어 가이드  (0) 2017.09.22
[swift] push notification  (0) 2014.06.25
반응형

iOS11 이 출시 되면서 Xcode 9 도 함께 출시 되었습니다.

어떤 내용들이 바뀌었는지 아래 영문으로 된 애플 개발자 사이트를 참고 하세요

애플 개발자 사이트 : (https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/WhatsNewXcode/xcode_9/xcode_9.html#//apple_ref/doc/uid/TP40004626-CH8-SW1)

다음은 Xcode 9 의 새로운 업데이트의 하이라이트 입니다. 

1. 새로운 에디터 

2. 리팩토링

3. 빠른 검색

4. 디버깅

5. Source Control

6. Xcode Server Built-in

7. 새로운 플레이그라운드 탬플릿

8. 새로운 빌드 시스템 

반응형
반응형


(참고: 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]];



반응형
반응형


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;

    }

)


반응형
반응형


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]; }

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

반응형
반응형


Yosemite 업그레이드 하고 테스트 하다 항상 사용하는 parallels 가 작동하지 않아 부득이 하게 Mavericks 로 다시 내려왔습니다. 다운그레이드 이후 
여러가지 느림 현상 때문에 중요한 파일 몇개 빼고 다시 포멧 후 설치를 하게 되었습니다. 그러면서 안쓰는 앱들 정리하게 되었는데요, 아래 리스트는 제가 항상 설치하며 사용중인 앱 리스트입니다.
 


  1. iMovie : 간단한 동영상 제작앱입니다.. 여행 다녀와  짧은 동영상 만들기 딱 좋은 앱이라 자주 사용하는 편입니다.
  2. iPhoto : 아이폰 사진 동기화 하는 앱으로만 사용중입니다.
  3. Archy : 구글 Docs 를 접속을 브라우저 없이 앱안에서 사용할 수 있어서 애용하는 앱이지요.
  4. Backup to go : 리뷰를 보니 정말 유용한 듯.. 필수 목록에 일단 담아봤습니다. 꼭 사용해보고 싶은 앱
  5. Balsamic mockup : 간략한 화면 기획 할 때 회의에서도, 개인적으로도 아이디어 정리할 때 편리하네요.
  6. Caffeine : 자주 화면이 어두워지는 맥을 위해 카페인을 타먹여 항시 화면이 켜있게 해주는 앱.. :)
  7. Calendar : 상당 바에 올라가 있으며 화면을 크게 차지 하지 않아 스케줄 확인할 때 사용합니다. [이전리뷰] 2011/03/15 - 01. #Calendar 맥 어플 리뷰 #macApp 
  8. Calibre : kindle 구입후 설치한 앱입니다
  9. Dropbox : drobox 동기화 필수 앱이죠? Dropbox 서비스 사용을 위해 필수는 아니지만 있음 좋은 앱
  10. Evernote : 언제부터인지 사용안하는 에버노트. 하지만 이전 데이터 검색을 위해 설치해둡니다.
  11. Forklift어둠의 경로로 받은 앱인데 넘 유용하게 사용중여서 이번 가격다운할 때 구입해버렸습니다.
  12. Gomplayer : Movist 를 주로 사용하지만 간혹, 필요할 듯 싶어 가지고 있는 앱입니다. 없어도 되지만..
  13. Line : 라인 톡을 자주 사용해서 꼭 가지고 있습니다. 베타 때부터 쭈욱 잘 사용중입니다.
  14. Mars edit : 티스토리 글쓰기 에디터가 구릴 때 사용했던 블로그 에디터 입니다. 
  15. Parallels : VM 의 강자죠. 정말 잘 사용중입니다. 멀티 플랫폼 지원안하는 앱을 위해. 필수인 앱. OS 테스트도. :)
  16. Softmatic dockclock : Back to the mac 에서 소개된 dock 에 올라가는 시계앱. 이뻐서 계속 사용중입니다.
  17. Source tree :  bitbucket GIT 클라이언트. GIT 시작을  bitbucket 으로 하여 그냥 쭉 사용중입니다. 
  18. Sublime text2 : 예전 php 코딩 때 정말 유용하게 잘 사용했던 에디터 입니다. 요즘엔 텍스트 에디터로 사용 중
  19. Unarchiver : 간혹 zip 이 안열릴 때 이 앱을 사용합니다. 더 좋은 압축 앱도 있습니다만.. 
  20. Things : GTD 의 최강자 죠. 아이폰에서 잘 사용중이며, 언젠가는 구입을.. (쿨럭!!)
  21. Transmission : 토렌트 파일 다운을 위해 사용중입니다. 
  22. Trim enabler : SSD 를 위해서 꼭 필요한 앱입니다. 습관처럼 설치되고 있는 앱이죠. 
  23. Twitter : 트위터 클라이언트
  24. Visual paradigm : 이건.. 최근들어 사용중인 UML 툴입니다.
  25. Vox : mp3 player 인데, 상단 바에 컨트롤들이 이쁘게 들어가 넘 좋습니다.
  26. Xcode : objective-c 와 cocos-2dx 개발을 위해 필수였던.. 요즘엔 objective-c 만을 위해 사용 중입니다.
  27. Xmind : 아이디어 정리와 브레인스토밍에 정말 편리한 툴입니다. 
  28. Movist  : 영화 보는데 주로 사용하는 앱입니다.. 참 잘만든 앱인듯.. 팍팍 지원


이 외에도 skitch 나 Skype, KakaoTalk 도 사용중입니다만.. 개인적으로 꼭 사용하는 필수 앱은 아니여서 추가하지 않았습니다. 훨씬 좋은 앱들도 많을듯 싶지만.. 익숙한 앱들만 사용중이여서 다소 다른분들과 다른 내용들도 있을듯 싶네요 :)

반응형
반응형


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

참고싸이트 : 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];       
    });

반응형
반응형


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


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


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


반응형
반응형


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


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

Deserialize from JSONSerialize to JSON


반응형
반응형

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

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



SimpleTable App

반응형

+ Recent posts