[IPHONE] UUID 생성
CS/iPhone 2012. 1. 24. 17:52+ (NSString *)uuid
{
CFUUIDRef uuidRef = CFUUIDCreate(NULL);
CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
CFRelease(uuidRef);
return [(NSString *)uuidStringRef autorelease];
}
'iPhone'에 해당되는 글 8건
[IPHONE] UUID 생성CS/iPhone 2012. 1. 24. 17:52원문 : http://stackoverflow.com/questions/7016311/how-to-generate-unique-identifier
+ (NSString *)uuid { CFUUIDRef uuidRef = CFUUIDCreate(NULL); CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef); CFRelease(uuidRef); return [(NSString *)uuidStringRef autorelease]; } [IPHONE] TableViewCell styleCS/iPhone 2012. 1. 14. 22:41원문 : http://borkware.com/quickies/one?topic=UITableView
[IPHONE] Using Core DataCS/iPhone 2012. 1. 12. 23:20원문 : http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreData/cdProgrammingGuide.html
Managed Object
Custom implementation
- NSManagedObject의 서브클래스에 대해 작성하는 accessor methods의 구현에는 일반적으로 다른 클래스를 작성하는것과는 다르다.
Creating
NSManagedObject *newEmployee = [NSEntityDescription insertNewObjectForEntityForName:@"Employee" inManagedObjectContext:context]; NSManagedObject *newEmployee = [[NSManagedObject alloc] initWithEntity:employeeEntity insertIntoManagedObjectContext:context];
Entity Description
NSManagedObjectContext *context = <#Get a context#>; NSManagedObjectModel *managedObjectModel = [[context persistentStoreCoordinator] managedObjectModel]; NSEntityDescription *employeeEntity = [[managedObjectModel entitiesByName] objectForKey:@"Employee"];
NSManagedObjectContext *context = <#Get a context#>; NSEntityDescription *employeeEntity = [NSEntityDescription entityForName:@"Employee" inManagedObjectContext:context];
Deleting
NSManagedObjectContext *context = <#Get a context#>; [context deleteObject:managedObject]; - managed object context에 deleteObject: 메세지를 보내면, context는 NSManagedObjectContextObjectsDidChangeNotification 통지를 post한다. - 만약 object가 동일한 transaction에서 create되고 delete 된다면, managed object context의 deletedObject 의 결과 array나 NSManagedObjectContextDidSaveNotification 통지의 deleted object set에 나타나지 않을 것이다.
To-many relationships
NSMutableSet *employees = [aDepartment mutableSetValueForKey:@"employees"]; [employees addObject:newEmployee]; [employees removeObject:firedEmployee];
// or
[aDepartment addEmployeesObject:newEmployee]; [aDepartment removeEmployeesObject:firedEmployee]; - mutableSetValueForKey: 에 의해 리턴되는 값과 dot accessor method에 의해 리턴되는 값의 차이를 이해하는 것은 중요하다. - mutableSetValueForKey:는 mutable proxy object를 리턴한다. - 만약 그것의 내용을 바꾼다면, relationship에 대한 적절한 KVO change 통지를 emit 할 것이다. - dot accessor 는 단순히 set을 리턴한다. - 만약 [aDepartment.employees addObject:newEmployee] 와 같이 한다면, KVO change notification은 emit 되지 않을 것이며, inverse relationship은 적절하게 update되지 않을 것이다. - dot 은 accessor method를 invoke 하기 떄문에, [[aDepartment employees] addObject:newEmployee]; 도 같은 결과이다.
Manipulating Relationships and Object Graph Integrity
- Core Data 는 object graph의 consistency를 관리하기 때문에, 관계의 한쪽 끝만을 변경하면 다른 면은 Core Data 가 관리해 준다. anEmployee.department = newDepartment; or [newDepartment addEmployeeObject:anEmployee];
Managed Object Context
Undo management
- 각 managed object context는 undo manager를 유지한다. - Undo 비활성화 [context processPendingChanges]; // Flush operations for which you want undos [[context undoManager] disableUndoRegistration];
// Make changes for which undo operations are not to be recorded // ...
[context processPendingChanges]; // Flush operations for which you do not want undos [[context undoManager] enableUndoRegistration];
Managed Object Model
Runtime에 NSManagedObjectModel 얻기
[[<#A managed object context#> persistentStoreCoordinator] managedObjectModel];
[[<#A managed object#> entity] managedObjectModel];
Fetch
Fetching managed objects
NSManagedObjectContext *context = [self managedObjectContext]; NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Employee" inManagedObjectContext:context]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; [request setEntity:entityDescription];
NSNumber *minimumSalary = ...; NSPredicate *predicate = [NSPredicate predicateWithFormat: @"(lastName LIKE[c] 'Worsley') AND (salary > %@)", minimumSalary]; [request setPredicate:predicate];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES]; [request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]]; [sortDescriptor release];
NSError *error = nil; NSArray *array = [context executeFetchRequest:request error:&error];
Template 사용
NSManagedObjectModel *model = <#Get a model#>; NSFetchRequest *requestTemplate = [[NSFetchRequest alloc] init]; NSEntityDescription *publicationEntity = [[model entitiesByName] objectForKey:@"Publication"]; [requestTemplate setEntity:publicationEntity]; NSPredicate *predicateTemplate = [NSPredicate predicateWithFormat: @"(mainAuthor.firstName like[cd] $FIRST_NAME) AND \ (mainAuthor.lastname like[cd] $LST_NAME) AND \ (publicationDate > $DATE)"]; [requestTemplate setPredicate:predicateTemplate]; [model setFetchRequestTemplate:requestTemplate forName:@"PublicationsForAuthorSinceDate"]; [requestTemplate release]; NSError *error = nil; NSDictionary *substitutionDictionary = [NSDictionary dictionaryWithObjectsAndKeys: @"Fiona", @"FIRST_NAME", @"Verde", @"LAST_NAME", [NSDate dateWithTimeIntervalSinceNow:-31356000], @"DATE", nil]; NSFetchRequest *fetchRequest = [model fetchRequestFromTemplateWithName:@"PubliccationsForAuthorSinceDate" substitutionVariables:substitutionDictionary]; NSManagedObjectContext *context = <#Get a managed object context#>; NSArray *results = [context executeFetchRequest:fetchRequest error:&error];
Retrieving specific objects
NSManagedObjectContext *context = [self managedObjectContext]; NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Employee" inManagedObjectContext:context]; NSFetchRequest *request = [[NSFetchRequest alloc] init]; [request setEntity:entityDescription]; [request release];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"self == %@", targetObject]; [request setPredicate:predicate];
NSError *error = nil; NSArray *array = [context executeFetchRequest:request error:&error]; [IPHONE] 나눔고딕 적용CS/iPhone 2011. 12. 29. 03:25참고 : http://kgriff.posterous.com/45359635
1. plist 에 폰트 등록 <array> <string>NanumGothicExtraBold.ttf</string> <string>NanumGothicBold.ttf</string> <string>NanumGothic.ttf</string> </array> 혹은 "Fonts provided by application" 에 추가 OTF는 시뮬러에터에서는 동작하나, Device 에서 동작 안하는듯. (확인 필요) 2. 사용 [UIFont fontWithName:@"NanumGothicExtraBold" size:22.0]; [IPHONE] Xcode templateCS/iPhone 2010. 11. 24. 14:53Xcode template 위치 (Source)
/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates
User template 위치
${USER}/Library/Application Support/Developer/Shared/Xcode/Project Templates [IPHONE] Break on exception in Xcode. & Enable NSZombieCS/iPhone 2010. 8. 25. 09:23참조
Break on exception in Xcode.
Double-Click for symbol > “objc_exception_throw”
Enable NSZombie
1. Double-click an executable in the Executables group of your Xcode project.
2. Click the Arguments tab.
3. In the “Variables to be set in the environment:” section, make a variable called “NSZombieEnabled” and set its value to “YES”. |