앱프리(Appfree)

iOS 개발을 위해서는 Mac 컴퓨터와 함께 개발자로 등록이 필요합니다.

(물론 해킨토시로도 가능하다고는 하지만 비추천이고요...)

 

아래 Site로 가시면

http://developer.apple.com/programs/register/

 

 1) iOS 개발자 프로그램(1년에 \119,000)

     App Store의 응용프로그램을 개인, 단독 사업자, 회사, 조직, 정부 기관 또는 교육 기관으로 배포하려면
     이 프로그램을 선택합니다.

 2) iOS 개발자 기업 프로그램(1년에 \359,000)

     회사, 조직, 정부 기관 또는 교육 기관 내에서 내부 배포용 독점 응용 프로그램을 개발하려면

     이 프로그램을 선택합니다.

 3) iOS 개발자 대학 프로그램(무료)

     학위를 수여하는 고등 교육 기관에서 교육 과정에 iOS 개발 과정을 도입하려는 경우 이 프로그램을 선택합니다.

 

이렇게 소개하고 있습니다.

'컴퓨터 활용 > 기타' 카테고리의 다른 글

맥에서 parallels 깔고 win8설치 후 인증  (0) 2014.02.25
다양한 추천 사이트 모음  (0) 2013.12.11
iOS 개발자 등록  (0) 2013.12.08
xCode 4.2 에서 SQLite사용하기  (1) 2012.07.22
win7에서 절전모드 해제  (0) 2011.11.14
아래 한글(HWP)을 PDF로 변환  (0) 2011.10.23

Comment +0

xCode 4.2 에서 SQLite 사용하기

   - xCode 4.2 에는 Resources 폴더가 없습니다.

     (프로젝트 선택한 후 Build-Phases탭 아래쪽의 Copy Bundle Resources에 만들어 놓은 db추가 해야 합니다.)

   - 이미 만들어져 이는 db.sqlite를 불러서 NSLog();를 통해 확인해 보는 예제입니다.

   - Document에 db.sqlite 파일 복사하는 부분 넣지 않으니까 결과가 안나오더군요...

 

//
//  AppDelegate.m
//  dbtest002
//
//  Created by ChanSeob Lee on 12. 7. 17..
//  Copyright (c) 2012년 __MyCompanyName__. All rights reserved.
//

#import "AppDelegate.h"
#import <sqlite3.h>

@implementation AppDelegate

@synthesize window = _window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
   
    NSString *databaseName = @"db.sqlite";

    //도큐먼트 디렉토리 위치를  얻는다.
    NSString* documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];    
    
    //도큐먼트 위치에 db.sqlite명으로 파일패스 설정
    NSString *filePath = [documentDirectory stringByAppendingPathComponent:databaseName];

    NSFileManager *fileManager = [NSFileManager defaultManager];
   
    // 도큐먼트에 .sqlite 파일 복사
    BOOL dbexits = [fileManager fileExistsAtPath:filePath];
    if (!dbexits) 
    {
        NSString *defaultDBPath = [[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:databaseName];
        NSError *error;
       
        BOOL success = [fileManager copyItemAtPath:defaultDBPath toPath:filePath error:&error];
        if (!success) {
            NSAssert1(0,@"Failed to create writable database file with message '%@'.", [error localizedDescription]);
        }
    }    
    
    // 데이터베이스를 연결한다. 해당 위치에 데이터베이스가 없을경우에는 생성해서 연결한다.
    sqlite3 *database;
    if (sqlite3_open([filePath UTF8String], &database) != SQLITE_OK) {
       
        sqlite3_close(database);
       
        NSLog(@"Error");
    }
    
    
    // 테이블 생성
    char *sql = "CREATE TABLE IF NOT EXISTS test (no INTEGER PRIMARY KEY NOT NULL, name VARCHAR)";
   
    if (sqlite3_exec(database, sql, nil,nil,nil) != SQLITE_OK) {
       
        sqlite3_close(database);
       
        NSLog(@"Error");
    }
    
   
//    // 삽입 및 갱신
//    sqlite3_stmt *insertStatement;
//    char *insertSql = "INSERT or REPLACE INTO test (no,name) VALUES(?,?)";
//   
//    //프리페어 스테이트먼트를 사용
//    if (sqlite3_prepare_v2(database, insertSql, -1, &insertStatement, NULL) == SQLITE_OK) {
//       
//        //?에 데이터를 바인드
//        sqlite3_bind_int(insertStatement, 1, 1);
//        sqlite3_bind_text(insertStatement, 2, [@"홍길동" UTF8String],  -1, SQLITE_TRANSIENT);
//       
//        // sql문 실행
//        if (sqlite3_step(insertStatement) != SQLITE_DONE) {
//            NSLog(@"Error");
//           
//        }
//    }
    
   // select
    sqlite3_stmt *selectStatement;
   
    char *selectSql = "SELECT no, name FROM test";
   
    if (sqlite3_prepare_v2(database, selectSql, -1, &selectStatement, NULL) == SQLITE_OK) {
        
        // while문을 돌면서 각 레코드의 데이터를 받아서 출력한다.
        while (sqlite3_step(selectStatement)==SQLITE_ROW) {
            int no = sqlite3_column_int(selectStatement, 0);
            NSString *name = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectStatement, 1) ];
            NSLog(@"no : %i, name : %@",no,name);
        }          
    }       
    
//statement close
//    sqlite3_finalize(insertStatement);
    sqlite3_finalize(selectStatement);
    
    //db close
    sqlite3_close(database);
     
    [_window makeKeyAndVisible];
    return YES;
}


@end

1

  • 정시퇴근 2012.09.13 18:07 신고

    감사합니다!!! 이걸로 문제 해결했습니다.

    주인장님 진짜 고마워요..ㅠ.ㅠ

xcode version 4.2.1에서 project를 만들면 처음 나오는 summary 탭에는
"Support Device Orientations"라는 항목이 있어서 지원할 모드를 정할 수 있다.
하지만 "Portrait"(세로모드)만 지원하도록 지정해도 빌드하면 옆으로 잘만 돌아간다...;;

그래서 찾아보니 코드 상으로 가로모드를 지원하지 않도록 하는 방법이 있었다.!!!

아래와 같이 .m파일에 추가해주면 된다.
 
< Portrait만 지원할 경우 >

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation <= UIInterfaceOrientationPortrait);
} 

< Portrait에 PortraitUpsideDown까지 지원할 경우 >
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation <= UIInterfaceOrientationPortraitUpsideDown);
} 

Comment +0