외규장각 도서 환수 모금 캠페인

static NSManagedObjectModel *managedObjectModel()

{

    static NSManagedObjectModel *model = nil;

    if (model != nil) {

        return model;

    }

    

    NSString *path = @"CoreDataTutorial";

    path = [path stringByDeletingPathExtension];

    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"coredatatest" withExtension:@"mom"];

    

    model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

    

    return model;

}


static NSManagedObjectContext *managedObjectContext()

{

    static NSManagedObjectContext *context = nil;

    if (context != nil) {

        return context;

    }


    @autoreleasepool {

        context = [[NSManagedObjectContext alloc] init];

        

        NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:managedObjectModel()];

        [context setPersistentStoreCoordinator:coordinator];

        

        NSString *STORE_TYPE = NSSQLiteStoreType;

        

        NSString *path = @"coredatatest";

        NSURL *url = [NSURL fileURLWithPath:[path stringByAppendingPathExtension:@"sqlite"]];

        

        NSError *error;

        NSPersistentStore *newStore = [coordinator addPersistentStoreWithType:STORE_TYPE configuration:nil URL:url options:nil error:&error];

        

        if (newStore == nil) {

            NSLog(@"Store Configuration Failure %@", ([error localizedDescription] != nil) ? [error localizedDescription] : @"Unknown Error");

        }

    }

    return context;

}


int main(int argc, const char * argv[])

{


    @autoreleasepool {

        // Create the managed object context

        NSManagedObjectContext *context = managedObjectContext();

        

        // Custom code here...

        // Save the managed object context

        NSError *error = nil;

        if (![context save:&error]) {

            NSLog(@"Error while saving %@", ([error localizedDescription] != nil) ? [error localizedDescription] : @"Unknown Error");

            exit(1);

        }

        

        NSString *dataPath = [[NSBundle mainBundle] pathForResource:@"Banks" ofType:@"json"];

        NSArray *Banks = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfFile:dataPath] options:kNilOptions error:&error];

        NSLog(@"Imported Banks : %@", Banks);

        

        [Banks enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

            FailedBankInfo *failedBankInfo = [NSEntityDescription insertNewObjectForEntityForName:@"FailedBankInfo" inManagedObjectContext:context];

            failedBankInfo.name = [obj objectForKey:@"name"];

            failedBankInfo.city = [obj objectForKey:@"city"];

            failedBankInfo.state = [obj objectForKey:@"state"];

            

            FailedBankDetails *failedBankDetails = [NSEntityDescription insertNewObjectForEntityForName:@"FailedBankDetails" inManagedObjectContext:context];

            failedBankDetails.closeDate = [NSDate dateWithString:[obj objectForKey:@"closeDate"]];

            failedBankDetails.updateDate = [NSDate date];

            failedBankDetails.zip = [obj objectForKey:@"zip"];

            

            failedBankDetails.info = failedBankInfo;

            failedBankInfo.details = failedBankDetails;

            

            NSError *error = nil;

            if (![context save:&error]) {

                NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);

            }

        }];

        // Test listing all FailedBankInfos from the store

        NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];

        NSEntityDescription *entity = [NSEntityDescription entityForName:@"FailedBankInfo" inManagedObjectContext:context];

        [fetchRequest setEntity:entity];

        

        NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];

        

        for (FailedBankInfo *info in fetchedObjects) {

            NSLog(@"Name: %@", info.name);

            FailedBankDetails *details = info.details;

            NSLog(@"Zip: %@", details.zip);

        }

    }

    return 0;

}


참조 : http://www.raywenderlich.com

Posted by 닉네임영역
,

1. UITableView *tableView = (UITableView *)self.superview.superview;

    NSIndexPath *path = [tableView indexPathForCell:self];

    [tableView.delegate tableView:tableView didSelectRowAtIndexPath:path];


2. cell tag 연결 후 addTarget 하여 methhod 등록

Posted by 닉네임영역
,

1. NSUserDefaults : Dictionary 형태의 메모리 저장소

example>

// init

[NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

// get

[defaults objectForKey:@"Key"];

// set

NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Key", @"Value", nil];

[defaults registerDefaults:dictionary];


2. CoreData : Database를 wrap 한 저장소

[Update 예정]


3. Sqlite : Database

[Update 예정]


4. Plist : DIctionary 형태의 파일 저장소

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *filePath = [documentsDirectory stringByAppendingString:@"/userInfo.plist"];

NSMutableDictionary *plist = [[NSMutableDictionary alloc] init];

[plist setValue:@"Value" forKey:@"Key"];

[plist writeToFile:filePath atomically:YES];


5. Keychain : 폰 내부에 같은 도메인끼리 참조 할 수 있는 데이터 저장소


Posted by 닉네임영역
,

xxx.h

@protocol delegate명;


@property(nonatomic, retain) id<delegate명> delegate;


맨 밑에

@protocol delegate명 <NSObject>


- (void)delegate_method:(returnType)variable;


@end


xxx.m

@synthesize delegate=_delegate;


[_delegate release];


- (id)initWithDelegate:(id<delegate명>)delegate {

self = [self init];

if(self) {

[self setDelegate:delegate];

}

}


delegate보낼 method 안에는

if([self.delegate respondsToSelector:@selector(delegate_method명:)]) {

[self.delegate delegate_method명:variable];

}


delegate 구현

- (void)delegate_method:(returnType)variable {

NSLog(@"%@", variable);

}

Posted by 닉네임영역
,
EXC_BAD_ACCESS 디버깅하는 방법








출처 : http://xinics.tistory.com/entry/Xcode-4-NSZombie



Posted by 닉네임영역
,

NSFileManager - NSFileManager 클래스는 파일 생성, 이동, 읽기, 쓰기, 그리고 파일의 속성 읽고 설정하기와 같은 기본적인 파일과 디렉토리 작업을 할 때 사용된다. 게다가 이 클래스는 현재 작업 중인 디렉토리를 식별하는 것과 새로운 디렉토리로 변경하는 것, 그리고 디렉토리를 생성하고 디렉토리에 있는 항목들을 나열하는 작업을 위한 메서드들을 제공한다.


NSFileHandle - NSFileHandle 클래스는 파일 내에서의 특정 위치를 찾는 것과 일정 크기의 바이트 양의 파일 내용을 읽고 쓰는 것과 기존의 파일에 데이터를 추가하는 것과 같이 낮은 수준의 작업을 수행하기 위하여 제공된 클래스다.


NSData - NSData 클래스는 읽어 온 파일의 내용이나 파일에 쓸 데이터를 위하여 유용한 저장 버퍼를 제공한다.



NSFileManager *filemgr;

NSString *currentpath;


filemgr = [NSFileManager defaultManager]; 

currentpath = filemgr currentDirectoryPath]; // 현재 작업 중인 디렉토리


if([filemgr changeCurrentDirectoryPath: @"/temp/mydir"] == NO) //디렉토리 변경 실패했을 경우

NSLog(@"Cannot change directory");


currentpath = [filemgr currentDirectoryPaht];


[filemgr createDirectoryAtPath: @".tmp/mynewdir", attributes: nil]; // 새로운 디렉토리 생성


[filemgr removeItemAtPath: @"/tmp/mynewdir" error:nil ]; // 디렉토리 삭제


[filemgr movePath:@"/tmp/mynewdir" toPath: @"/tmp/mynewdir2" handle:nil]; // 디렉토리 이름 변경과 이동


NSArray *filelist;

filelist = [filemgr directoryContentsAtPath: @"/tmp"]; // 디렉토리에 있는 파일 목록 얻기


if([filemgr fileExistsAtPath: @"/tmp/myfile.txt"] == YES) // 파일이 있을 경우

     NSLog(@"File exists");


if([filemgr contentsEqualAtPath: @"/tmp/myfile.txt" andPath: @"/tmp/sales.txt"] == YES) // 두 개의 파일 내용 비교



접근 권한 - 파일 경로를 인자로 받는다

- isReadableFileAtPath:

- isWritableFileAtPath:

- isExecutableFileAtPath:

- isDeletableFileAtPath;



NSFileManager *filemgr;

NSData *databuffer;


filemgr = [NSFileManager defaultManager];


databuffer = [filemgr contentsAtPath: @"/tmp/myfile.txt"]; // 내용 담기



 NSString *homedir;

homedir = NSHomeDirectory(); // 현재사용자의 홈 디렉토리 얻기



* NSCopying 프로토콜을 사용하여 객체를 복사하면 복사한 객체의 값이 변하더라도 원본 객체의 값에는 변화가 없다.


Posted by 닉네임영역
,

NSString *aStr = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharactersSet]];

Posted by 닉네임영역
,

NSXMLParser *parser = [[NSXMLParser alloc] initWithData:[xml dataUsingEncoding:NSUTF8StringEncoding]];

[parser setDelegate:self];

[parser parse];

[parser release];


- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict

{

    // Start 태그를 만났을 때

}


- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

{

    // End 태그를 만났을 때

}


- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string

{

// 값을 찾았을 때

}

Posted by 닉네임영역
,

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

NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

Posted by 닉네임영역
,
Xcode 4.2 기준

1. DEBUG 추가
PROJECT > Build Settings > Apple LLVM compiler 3.0 - Preprocessing
Preprocessor Macros > Debug 에 DEBUG 입력

2. NSLog 출력 방식 변경
<프로젝트명>_Prefix.pch의 맨 밑에

#ifdef DEBUG
#define NSLog( s, ...) NSLog( @"<%p %@: (%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__. [NSString stringWithFormat:(s), ##__VA__ARGS__] )
#else
#define NSLog( s, ...)
#endif

3. 출력형태
파일명 라인번호 출력값
Posted by 닉네임영역
,


사랑합니다. 편안히 잠드소서