아이폰어플정보2010. 6. 26. 00:20
아이폰,아이팟터치를 탁상 알람시계로 사용하기 - AlarmClock

앱스토어 평점 : 4.0 / 5.0

앱스토어 연결 : 유료버전 0.99$, 무료버전

외국영화를 보면 침대에서 주인공이 자고 있고 침대 옆에 있는 탁자(?)에서 알람 시계가 힘차게 울립니다. 졸린눈을 비비고 일어나 알람을 끄는 장면이 심심찮게 나옵니다. 따로 알람시계가 있으신분은 필요없겠지만 없으신분은 아이폰, 아이팟터치를 올려놓을 거치대만 있으면 멋진 탁상용 알람시계를 얻을 수 있습니다.

AlarmClock은 미국 앱스토어 유틸리티 분야에서 오랫동안 1위를 달렸던 App 이고요. 지금도 상위권에 꾸준히 올라와 있는 스테디셀러 입니다. 무료버전도 알람시계 기능으론 충실하니 무료버전으로 쓰시다 필요하신 분만 유료버전을 구입하시면 됩니다.

유료버전은 다양한 색을 선택할 수 있고 기기에 저장한 음악을 알람벨로 사용할 수 있습니다. 부가적으로 플래쉬기능(Flash Light)까지 있으니 일석이조입니다.

가로로 눕혀 놓은 모습입니다. 이 알람시계는 가로로 눕혀 놔야 더 멋지고 숫자도 크게 보입니다.

영롱한 야광색이 알람시계 분위기를 냅니다. 불을 끄고 어둡게 하면 더 멋질 것 같습니다.

유료버전은 숫자 색을 바꿀 수 있습니다.

세로로 세워놨을 때 모습니다. 역시 가로로 눕혀 놓는게 더 멋집니다.

오른쪽 하단 i (info) 버튼을 누르면 알람시간을 설정할 수 있습니다.

Add Alarm.. 을 선택하면 알람을 추가할 수 있습니다.

벨이 울릴 시각과 벨소리(유료버전은 개인소장 음악으로 설정할 수 있습니다.)등을 설정합니다.

아이폰, 아이팟터치가 지원하는 자동잠금 (Auto-Lock)기능을 꺼야 하지 않냐고요?

자동잠금 기능이 있으면 자동으로 꺼질테니 탁상시계 역할론 부족합니다.

그래서 내부적으로 자동잠금 설정을 지원합니다.

기본은 충전중이 아닐 땐 5분, 충전중일 땐 자동잠금 기능이 꺼져 있습니다. 필요하신분은 설정하세요.

탁상시계용으로 쓰려면 충전중일 땐 자동잠금 기능을 꺼놓는게 좋겠죠?

거치대에 가로로 눕혀놓고 충전 케이블을 연결한 상태에서 자동잠금 기능을 꺼놓으면 완벽한 탁상시계가 됩니다.

아침에 일어나 알람이 시끄럽다고 집어 던지시면 안됩니다. 다른 시계보다 비싸니까요..^^

전 여기에 올려 놓고 쓰고 있습니다. 레고로 만든 아이폰, 아이팟터치용 거치대



출처 : http://blog.naver.com/PostView.nhn?blogId=ghostsbs&logNo=100394571
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 6. 24. 14:19
SQLite 사용하기 (MacOS / xCode / iPhone)
 
 SQL Database

- CLI(Command Line Interface)를 사용하여 생성 (한마디로 터미널에서 작업해라~)

- > sqlite3 test.sql 이라고만 치면 test라는 이름을 가진 database 생성

- database를 프로젝트에 추가 (Project ->Add to Project)

- Resource 폴더 밑으로 넣어준다

- SQLite Manager를 사용하면 database를 쉽게 건드릴 수 있다.

 SQL Lib

lightweight SQL database를 임베드 시킨다.

- 프로젝트에 libsqlite3.0.dylib 파일을 추가

- Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.0.sdk/usr/lib/ 에 위치

- target -> Get Info -> General -> Linked Libraries -> 추가

 Model

database로 부터 받아온 data를 저장하기 위해 NSObject를 상속하여 만든다.

CRUD(Create/Read/Update/Delete)를 모두 처리할 수 있도록 구현 (sqlite3 포인터를 내장)

Copying the database

초반에 database를 복사해야 한다.

Application의 resource bundle 안에 default database를 가지고 있다.

만약 bundle 안에 어떤 것이라도 변경이 된다면 code sign은 실패할 것이다.

그러므로 Application Documents directory에  database의 복사본을 생성하자 (for writable db)

delegate 에 추가되는 부분~

1. applicationDidFinishLaunching: 에서 window를 구성 하기 전!!!!

2. 사용자의 iPhone documents directory에 database가 존재하는지 체크.

3. (편집가능한)database가 존재하지 않으면 복사.

 getting data from the database - delegate

sqlite3_open

sqlite3_stmt

 getting data from the database - model class

stmt 재사용 : prepare -> bind -> step -> reset -> prepare -> bind -> step -> reset -> ...

sqlite3_stmt 를 사용별로 static으로 선언하고 한번에 한 쿼리씩 사용한다.

sql문에

- ?
- ?NNN
- :AAA
- @AAA
- $VVV

을 적을 수가 있다. 이 파라메타는 바운드된 변수와 교체됩니다.

자주 발생하는 쿼리는 한번만 컴파일하고 새로운 변수만 바인딩해서 사용하면 된다.

sqlite3_bind_*()

sqlite3_prepare_v2() 후에, sqlite_step() 전에 사용.


 

 closing the database

application이 close 될때 delegate는 applicationWillTerminate: 메세지를 받는다.

적절하게 리소스들을 release 하려면 여기에서 database를 close 시켜주면 된다.

 Display data in the UITableView

tableView:numberOfRowsInSection:

- table view에 주어진 section안에 row의 수를 반환.

- data를 담아둔 array의 수를 반환하도록 수정.

tableView:cellForRowAtIndexPath:

- table view의 특정 위치에 cell을 추가.

- objectAtIndex 함수를 사용하여 array로부터 objtect를 얻고 UITableViewCell의 text에 object의 특정값을 설정.

 Delete a row from UITableView

 RootViewController의 viewDidLoad: 함수에  navigation bar의 Edit 버튼을 추가하는 코드 작성.

UITableView에서 row가 지워지거나 추가되면 RootViewController에 있는

tableView:commitEditingStyle:forRowAtIndexPath: 호출 됨. 이 함수를 수정해 주자.

1. editingStyle이 UITableViewCellEditingStyleDelete 인지 체크

2. data 삭제 (delegate의 remove 함수 호출)

3. deleteRowsAtIndexPaths: 함수를 이용해서 UITableView에서 row 삭제 

 Delete rows from the database - delegate

delegate 파일에 Model class 오브젝트를 인자로 받고 void를 리턴하는 remove 함수를 생성

1. Model class 자체의 remove 함수를 호출

2. Array에서 데이터를 삭제

 Delete rows from the database - model class

실제 database로 부터 데이터를 삭제

1. static으로 선언한 sqlite3_stmt (여기서는 delete_stmt)를 체크

2. nil 이면 prepare

3. bind -> step -> reset

 Create the add Method - model class

실제 database에 데이터를 추가하는 부분

1. static으로 선언된 sqilte3_stmt(add_stmt)를 체크

2. nil 이면 prepare

3. bind

4. step : 추가가 성공했으면 SQLITE_DONE을 반환

5. sqlite_int64 sqlite3_last_insert_rowid(sqlite3*); 를 사용하여 가장 마지막 primary key 값을 얻는다

6. reset

 Create the add Method - delegate

delegate 파일에 Model Class 타입을 인자로 받는 add 함수 생성

1. Model Class 자체의 add 함수 호출

2. 배열에 데이터를 추가

 Add new UIView - AddView.xib

1. Insterface Builder를 사용하여 새로운 뷰를 생성

2. 2개의 label과 두개의 text boxes를 추가

3. Text Field의 delegate 속성으로 부터 "File's Owner" 오브젝트로 연결

4. 저장 (AddView.xib 생성)

 Create UIViewController - AddView Controller

1. xCode를 이용해서 새로운 view controller를 생성 (AddViewController. 생성)

2. File's Owner의 클래스를 위에서 1번에서 만든 AddViewControoler로 설정

3. outler에 UITextField를 두개 생성

4. view ->view / 3번에서 만든 textfiled는 addview에 있는 textfield와 각각 링크

5. 저장(File -> Write File Classes...)

Add View Controller의 UINavigationItem에 "Cancel" 과  "Save" 버튼을 추가

Add View Controller의 viewDidLoad: 에서 작성

save 함수 생성

1. 각각의 text field 에서 text 값을 받아온뒤 object 생성

2. delegate 의 add 함수 호출

3. dismissModalViewControllerAnimated: 사용하여 컨트롤 해산

cancel 함수 생성

1. dismissModalViewControllerAnimated: 사용하여 컨트롤 해산

 Create UIViewController - RootViewController

Add 버튼을 추가하고 AddView를 연결.

- AddViewController 와 UINavigationController 변수 생성

- viewDidLoad: 에 add 버튼을 추가하고 selector 생성

add 버튼 selector 생성

1. AddViewController와 UINavigationController를 생성

2. presentModalViewController: 를 사용하여 navigationController에 추가

viewWillAppear: 에 View 를 표시하기전 table view를 update 해준다.

 Select data from database - model class

"hydrate"라는 이름을 가지는 함수를 생성 (선택된 object의 모든 detail 데이터를 가져오는 부분)

1. 이미 가져왔는지를 체크

2. static으로 선언된 hydrate 관련 sqlite3_stmt가 nil인지 체트

3. nil이면  sqlite3_prepare_v2():를 이용하여 stmt 빌드

4. bind -> step

5. SQLITE_ROW를 반환하면 sqlite3_column_*():를 사용하여 데이터를 받아온다.

6. reset

 Create the detail view - DetailView.xib

1. Insterface Builder를 사용하여 새로운 뷰를 생성

2. UITableView 추가

3. table view의 delegate 속성으로 부터 "File's Owner" 오브젝트로 연결

4. table view의 data source 속성으로 부터 "File's Owner" 오브젝트로 연결

4. 저장 (DetailView.xib 생성)

 Create the detail view - DetailViewController

헤더에 Model Class 변수 추가

1. xCode를 이용해서 새로운 view controller를 생성 (DetailViewController. 생성)

2. File's Owner의 클래스를 위에서 1번에서 만든 AddViewControoler로 설정

3. outler에 UITableView를 생성

4. view ->view / 3번에서 만든 tableview는 detail view에 있는 table view와 각각 링크

5. 저장 (File -> Write File Classes...)

 Selecting a row - RootViewController 

tableView:willSelectRowAtIndexPath:에서 detailviewcontroller를 호출

헤더에 DetailViewController 변수 추가.

1. detailviewcontroller가 nil인지 체크. 없으면 생성

2. delegate의 array를 통해 선택된 model class 얻는다

3. model class의 "hydrate" 호출하여 데이터를 얻는다

4. 얻어온 model class object를 detailviewcontroller의 model class 변수에 할당

5. navigationController의 pushviewcontroller:를 사용하여 detail view를 표시

 Displaying data in the detail view

 참조한 블로그

iPhone SDK Tutorial - Using SQL Lite Part I

iPhone SQLite Tutorial Series



출처 : http://blog.naver.com/PostView.nhn?blogId=j021004&logNo=50037416173

'아이폰어플개발정보' 카테고리의 다른 글

[App Store] iPortkey  (0) 2010.06.24
touch event  (0) 2010.06.24
SQLite 사용하기 (MacOS / xCode / iPhone)  (0) 2010.06.24
한글입력기 nabi의 설치와 사용  (0) 2010.06.24
Beginning iPhone Development: Exploring the iPhone SDK  (0) 2010.06.24
iPhone Cool Projects  (0) 2010.06.24
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 6. 21. 09:32
[펌] 노티피케이션(Notification) 사용하기
*주의: Push Notification service에 관한 내용이 아닙니다



http://cafe.naver.com/mcbugi/21370  에 올린 델리게이트에 관한 내용에 이어서 이번에는 노티피케이션에 관한 내용을 적어 봅니다..

이전과 마찬가지로 가장 심플한 수준의 코드로 샘플코드를 만들 것이니 복잡한 활용법은 스스로 문서등을 참조해서 깨우치도록(?) 하세요..


델리게이트와 마찬가지로 NSNotification도 오브젝트간의 통신을 위한 많은 방법들 중에 하나입니다. Delegate보다 사용법은 심플하고 강력하지만 잘못쓰면 코드가 엉망이 될 위험부담도 큰 놈입니다. 개념은 매우 단순합니다.

노티피케이션 센터란놈에 특정 메세지를 등록해두고 이 메세지가 불리어지면 다른 여러 오브젝트에 등록된 옵져버들이 메세지에 반응해서 이벤트를 처리해주는 식입니다.

노티피케이션의 강력한점은 동시에 여러오브젝트에 메세지를 전달한다는 점입니다. 

자.. 그럼 샘플코드를 만들어 보도록 합시다.  


텝바 베이스로 4개의 뷰컨트롤러를 가진 프로그램입니다. 각각의 뷰컨트롤러간에는 아무런 연관 관계도 없고 1번 뷰컨트롤러에서 메세지를 보내면 2,3,4번 뷰컨트롤러가 노티피케이션 옵져버에 의해서 메소드를 불러와서 값이 갱신되도록 하겠습니다.

먼저 4개의 뷰컨트롤러를 가진 프로그램을 만들었습니다. 이동은 탭바로 하지만 아무것도 없으니 너무 허전하내요..






일단 1번 뷰컨트롤러에는 텍스트 필드를 만들고 2,3,4번에는 1번 뷰컨트롤러의 텍스트 필드에 입력한 텍스트 값이 2,3,4번에 노티피케이션에 의해서 동시에 갱신되도록 만들겠습니다.

먼저 1번 뷰 컨트롤러 입니다. init함수에 텍스트 필드 하나를 위치시켰습니다.



FirstViewControllert.m

-(id) init{

     self = [superinit];

     if (self != nil) {

          textField = [[UITextFieldalloc] initWithFrame:CGRectMake(10, 10, 300, 25)];

          textField.delegate = self;

          textField.borderStyle = UITextBorderStyleRoundedRect;

          [self.view addSubview:textField];

     }

     returnself;

}


그리고 텍스트필드에서 완료를 누르면 키보드가 사라지면서 값을 저장하기 위해서 델리게이트 함수를 구현했습니다.


-(BOOL) textFieldShouldReturn:(UITextField *)_textField{

     //키보드내리기

     [_textField resignFirstResponder];

     //파라메터로넘길텍스트필드의스트링을딕셔너리에넣습니다

     NSDictionary *dic = [NSDictionarydictionaryWithObject:_textField.textforKey:@"inputText"];

     //노티피케이션센터에라벨을갱신하라고메세지를보냅니다. 파라메터는 NSTimer처럼 userInfo를이용해서텍스트필드의내용을파라메터로보내줬습니다. 보통 NSDictionary타입으로보내줍니다

     NSNotificationCenter *nc = [NSNotificationCenterdefaultCenter];

     [nc postNotificationName:@"saveTextFieldText"object:selfuserInfo:dic];

     returnYES;

}



키보드의 완료 버튼을 누르면 키보드가 내려가면서 입력받은 텍스트를 노티피케이션 센터에 saveTextFieldText 

메시지와 함께 전송을 합니다. 

**메세지는노티센터에서공통으로쓰기때문에될수있으면구체적이고알기쉽게.. 나중에노티피케이션메세지가많아지면관리가 엉말이될수있습니다.


이제 노티피케이션 센터에서 보낸 메세지에 반응하도록 다른 뷰컨트롤러들을 수정해 줍시다.



SecondViewController.m


-(id) init{

     self = [superinit];

     if (self != nil) {

          notificationLabel = [[UILabelalloc] initWithFrame:CGRectMake(10, 10, 300, 25)];

          notificationLabel.backgroundColor = [UIColorblueColor];

          [self.viewaddSubview:notificationLabel];

          NSNotificationCenter *nc = [NSNotificationCenterdefaultCenter];

          [nc addObserver:selfselector:@selector(saveText:) name:@"saveTextFieldText"object:nil];

     }

     returnself;

}


addObserver소드로 노티피케이션 센터에서 해당 메시지(saveTextFieldText)가 넘어오면 saveText: 메소드가 핸들링되게 설정을 해놨습니다. 다른 뷰컨트롤러도 동일하게 등록해주면 됩니다.


-(void)saveText:(NSNotification *)note{

     NSString *text = [[note userInfo] objectForKey:@"inputText"];

     notificationLabel.text = text;

}


실제 노티피케이션으로 메시지가 넘어왔을때 핸들링 하는 함수입니다. note의 userInfo는 이전에 userInfo로 넘긴 정보가 그대로 들어있으니 파라메터로 받아와서 라벨의 텍스트를 갱신 시켰습니다.



실제로 잘 작동하는 가볼까요?


노티피케이션 메세지가 잘넘어가는군요~ 잘만 활용하면 강력한 노티피케이션을 간단하게 이용해봤습니다.

그밖에 응용은 적당히 잘하시기 바랍니다, 그럼 이만 물러갑니다



출처 : http://blog.naver.com/PostView.nhn?blogId=seogi1004&logNo=110087701542
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 6. 21. 09:29
[펌] Cocoa 에서 MySQL 라이브러리 사용하기
출처 - http://www.cocoadev.co.kr/56



코아에서 MySQL C Library를 이용하는 예입니다. wrapper 클래스를 작성하여 MySQL
서버에 접속해서 데이터를 가져오는 간단한 샘플 코드를 작성해 보겠습니다.

OS X에서 MySQL 설치 및 설정은 이전 포스트를 참고해 하세요.


1. MySQL에서 작업

1) MySQL 서버 확인
테스트를 위하여 테이블을 생성하고 데이터를 넣어 보겠습니다. 우선 시스템 환경설정의 MySQL 항목에서 아래와 같이 서버가 기동중인지 확인 합니다. 서버가 실행되지 않고 있으면 Start 버튼을 클릭하여 아래와 같이 실행 상태로 만듭니다.

2) 테이블 생성 및 데이터 입력
그 다음 아래와 같이 터미널에서  MySQL에 로그인 후에 member 테이블을 생성하고 데이터를 넣습니다. 저는 이전에 test/1111로 계정을 만들고 cocoadev란 데이터베이스를 만들어 두었기에 아래와 같이 접속하였습니다.

id, name 두개의 필드를 가진 member란 테이블을 생성하고, 테스트를 위해 1, cocoa 값으로 데이터를 입력합니다.

2. 소스코드 작성
Xcode 를 실행하고 프로젝트를 생성합니다. 저는 최대한 간단하게 만들기 위해 프로젝트 타입을 Command Line Utility의 Foundation Tool로 선택하고 프로젝트를 생성하였습니다.

Wrapper 클래스 작성을 위하여 새 파일에서 Objective C class 타입으로 MySqlDB 클랙스를 생성합니다. 이제 MySqlDB.h 파일과 MySqlDB.m 파일을 작성합니다.

테스트를 위하여 연결 및 쿼리등 필요한 메소드만 작성해 보겠습니다. mysql.h 파일을 참고 하시면 MySQL 라이브러리에서 제공하는 많은 함수들을 확인하실 수 있습니다.

1) MySqlDB.h 편집
#import <Cocoa/Cocoa.h>
#import "mysql.h"

@interface MySqlDB : NSObject {

    bool isConnected;
    int rowCount;
   
    MYSQL mySQL;
    MYSQL *pMySQL;
   
    MYSQL_RES* pRes;
    MYSQL_ROW Rows;
}

-(id) initWithServer: (const char*) host
             loginID: (const char*) userid
         loginPasswd: (const char*) passwd
               setDB: (const char*) database;

-(bool) connect : (const char*) host
         loginID: (const char*) userid
     loginPasswd: (const char*) passwd
           setDB: (const char*) database;

-(bool) query :(const char*) str;
-(bool) getRows;
-(bool) getStringData: (int)idx toBuffer: (char *) buff;

-(bool) isConnected;
-(int) rowCount;

@end

2) MySqlDB.m 파일 편집
#import "MySqlDB.h"


@implementation MySqlDB

-(id) initWithServer: (const char*) host
             loginID: (const char*) userid
         loginPasswd: (const char*) passwd
               setDB: (const char*) database
{   
    self = [super init];
   
    [self connect: host
          loginID: userid
      loginPasswd: passwd
            setDB: database];
               
    return self;
}

- (void)dealloc
{
    if(pMySQL)
        mysql_close(pMySQL);
   
    [super dealloc];
}

-(bool) connect : (const char*) host
         loginID: (const char*) userid
     loginPasswd: (const char*) passwd
           setDB: (const char*) database
{
    isConnected = FALSE;
   
    pMySQL = mysql_init(&mySQL);
    if(pMySQL == NULL)
    {
        return FALSE;
    }
   
    pMySQL = mysql_real_connect(&mySQL, host, userid, passwd, database, 0, 0, 0);
    if(pMySQL == NULL)
    {
        return FALSE;
    }
   
    isConnected = TRUE;
   
    return TRUE;
}

-(bool) query: (const char*) str
{
    if(!pMySQL)
        return FALSE;
   
    int ret = mysql_query(pMySQL, str);
    if(ret != 0)
    {
        return FALSE;
    }
   
    pRes = mysql_store_result(pMySQL);
    rowCount = mysql_num_rows(pRes);
   
    NSLog(@"rows:%d", rowCount);
    return TRUE;
}

-(bool) getStringData: (int)idx toBuffer: (char *) buff;
{
    if(Rows[idx] == NULL)
        return FALSE;
   
    strcpy(buff, Rows[idx]);
    return TRUE;
}

-(bool) getRows
{
    Rows = mysql_fetch_row(pRes);
   
    if(Rows == NULL)
        return FALSE;

    return TRUE;
}

-(bool) isConnected
{
    return isConnected;
}

-(int) rowCount
{
    return rowCount;
}

@end

3) MyTest.m 편집
이제 테스트를 위하여 위에 작성된 클래스를 사용하여 MySQL서버에 접속하여 데이터를 가져오도록  MyTest.m 파일에 소스를 추가해 보겠습니다. 연결시 로그인 정보와 데이터 베이스, 쿼리 내용은 자신의 환경에 맞게 변경해 줍니다.

#import <Foundation/Foundation.h>
#import "MySqlDB.h"

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    // insert code here...
    MySqlDB* myDB = [[MySqlDB alloc] initWithServer:"localhost"
                                            loginID:"test"
                                        loginPasswd:"1111"
                                              setDB:"cocoadev"];
   
    if([myDB isConnected] == true)
    {
        if([myDB query :"SELECT * FROM member"])
        {
            char buff1[128];
            char buff2[128];
           
            [myDB getRows];
            [myDB getStringData: 0 toBuffer: buff1];
            [myDB getStringData: 1 toBuffer: buff2];
           
            NSLog(@"DATA: id=%s, name=%s", buff1, buff2);
        }
        else
            NSLog(@"Fail to query");
    }
    else
        NSLog(@"Fail to connect.");
   
    [myDB release]
    [pool release];
    return 0;
}


3. 빌드옵션 설정 및 라이브러리 등록

MySQL 라이브러리를 사용하기 위해서는 링크시에 라이브러리를 추가하도록 등록하고, 헤더파일을 인크루드하기 위해 위치를 지정해 주어야 합니다.

GCC 옵션에서 -I(인클루드 패스 지정), -L(라이브러리 패스 지정), -l(라이브러리 추가) 옵션을 생각하시면 됩니다.

1) include 패스 설정
빌 드시 헤더파일을 찾을 수 있도록 링크를 설정합니다. 프로젝트 정보창을 오픈합니다. Build 항목에서 "User Header Search Path"에 mysql의 include 패스를 입력합니다. 대부분 /usr/local/mysql에 설치되는데 다른 곳에 설치하신 분들은 그 곳의 패스를 입력합니다.

2. libmysqlclient.a 라이브러리 링크
파 인더에서 해당 디렉토리에 접근하기 힘들기 때문에 터미널에서
 > open /usr/local/mysql/lib 로 파인더를 오픈합니다.

libmysqlclient.a 파일을 드래그 하여 좌측과 같이 Xcode의 Frameworks 그룹으로 가지고 옵니다.




이제 모든 준비가 완료되었습니다. 빌드 후 실행하여 아래와 같은 결과를 확인합니다.

코 코아에서 MySQL 라이브러리를 사용하여 MySQL에 연결하는 방법을 간단히 알아 보았습니다. PostgreSQL이나 다른  C 라이브러리들도 위와 같은 방법으로 코코아에서 사용하실 수 있습니다.

티스토리 블로그 알리미를 작성한 적이 있는데, 설치형 블로그들은 위와 같이 DB에 직접 쿼리하는 방법으로 더욱 쉽고, 다용하고, 정확한 정보를 가져오는 툴을 작성할 수 있을 것 같습니다.


출처 : http://blog.naver.com/PostView.nhn?blogId=seogi1004&logNo=110085699082

'아이폰어플개발정보' 카테고리의 다른 글

[펌] NSURLConnection  (0) 2010.06.21
iPhone 사운드 관련 API  (0) 2010.06.21
[펌] Cocoa 에서 MySQL 라이브러리 사용하기  (0) 2010.06.21
[펌] NSXMLParser 로 RSS 읽어오기  (0) 2010.06.21
iPhone 개발 환경  (0) 2010.06.20
iPhone Software Stack  (0) 2010.06.20
Posted by 오늘마감

댓글을 달아 주세요

XCODE2010. 6. 21. 09:28
[펌] Xcode 도움말 사용하기
출처 - http://www.cocoadev.co.kr/206





Xcode를 사용하면서 도움말을 잘 이용하시면 많은 궁금증과 의문점을 쉽게 해소할 수 있습니다. 모르는 것에 대해서 도움말 보다는 구글에서의 검색과 관련 커뮤니티에 질문을 올리는 것은 쉽고 편한 방법일 수는 있어도 장기적으로는 바람직하지  않습니다. 먼저 도움말을 찾아 보고 그래도 답을 찾을 수 없을 때에 비로소 후자의 방법을 택해야 합니다.

다소 늦고 귀찮은 것 같더라도 도움말을 이용하면 원칙에 가까운 답을 얻어 낼 수 있고, 검색하거나 다른 중요한 사항들도 알아낼 수 있습니다. 도움말은 영문으로 되어 있지만 대부분 코드와 간단한 문장이기 때문에 저같이 영어를 잘 몰라도 대부분 쉽게 이해할 수 있습니다.
 
Xcode를 처음 사용하시거나 프로그래밍을 처음 하시는 분들을 위해서 간단하게 도움말을 이용하는 방법을 알아 보겠습니다.

1. Documentation
Xcode의 Help메뉴에서 Document를 클릭하거나 단축키(Shift+Command+Option+?)를 입력하면 아래와 같이 도큐먼트 창이 오픈됩니다.


1) 도움말 다운로드
Xcode의 도움말은 해당항목들을 다운로드 받으신 후에 사용할 수 있습니다. 원하시는 도움말 항목에서 SUBSCRIBE나 GET 버튼을 클릭하여 로컬로 다운로드 받아야 해당 도움말이 활성화 되고 사용할 수 있습니다.

2) 검색어


검색을 위해서는 우측 상단의 Starts With에 검색할 키워드를 입력합니다. 검색어는 &(AND), !(NOT), |(OR) 연산을 지원합니다.

(string | value)  & !format
위와 같은 입력은 string 또는 value를 포함하고 format을 포함하지 않는 항목을 검색합니다.

4) 검색 대상


  • API - 심볼명(클래스, 메소드등)에서 검색합니다.
  • Title - 문서의 제목에서 검색합니다.
  • Full-Text - 문서의 전체 내용에서 검색합니다.

5) 문서 범위


All Doc Sets는 전체문서에서 검색을 하며 우측에는 DOC SETS에서 현재 검색 범위를 표시합니다.

6) 언어 선택


All Languages는 전체 언어(Objective-C, C/C++, Java, Javascript)에서 검색을 합니다. 우측에는 현재 선택된 언어들이 표시되어 있습니다.

전체언어 다음에 선택될 언어들은 위의 API Options 버튼을 클릭하여 선택할 수 있습니다.


7) 검색 조건


검색창에 입력한 문장이 검색될 조건을 지정합니다.

  • Starts With - 입력된 검색어로 부터 시작되는 항목을 출력합니다.
  • Contains - 입력된 검색어가 포함된 항목을 출력합니다.
  • Exact - 입력된 검색어가 일치된 경우만 출력합니다.

2. Research Assistant
Xcode의 Help메뉴에서 Show Research Assistant를 클릭하거나 단축키(Shift+Control+Command+?)를 입력하면 아래와 같이 Research Assistant가 오픈됩니다.


Research Assistant가 오픈되어 있으면 Xcode의 에디터에서 커서가 위치한 곳에 해당항목에 대한 도움말이 있으면 자동으로 위와 같이 간단한 도움말과 관련 API, 문서, 샘플등을 표시해주는 아주 유용한 툴입니다. 듀얼 모니터를 사용하시는 분들은 Xcode 사용시 다른 모니터에 뛰워 놓으시면 편리하게 확인하실 수 있습니다.

3. 기타
1) 도움말 바로가기 (Option + 마우스 더블클릭)
Xcode의 에디터에서 옵션키를 누른 상태에서 레퍼런스 내용을 확인할 단어에다 마우스로 더블클릭을 하면 해당내용이 도큐멘테이션에서 바로 출력이 됩니다.

2) 선언 보기 (Command + 마우스 더블클릭)
Xcode의 에디터에서 커멘드키를 누른 상태에서 변수나 메소드등의 심볼을 클릭하면 해당 변수/메소드가 선언(또는 구현)된 소스파일로 이동합니다.

이외에 Xcode와 도움말에 대한 자세한 내용은 ADCXcode Workspace Guide 문서를 참조하시기 바랍니다.



출처 : http://blog.naver.com/PostView.nhn?blogId=seogi1004&logNo=110085700600
Posted by 오늘마감

댓글을 달아 주세요