iOS App 개발 중 Core Data 프레임 워 크 의 기본 데이터 관리 기능 요약
CoreData 는 데 이 터 를 관리 하 는 전문 적 인 프레임 워 크 로 성능 과 쓰기 편의 성에 있어 큰 장점 을 가진다.데이터 베이스 관리 에 있어 애플 은 개발 자 에 게 CoreData 프레임 워 크 를 사용 하 는 것 을 강력 히 추천 했다.애플 의 공식 문서 에서 CoreData 프레임 워 크 를 사용 하면 개발 자 50%―70%의 코드 량 을 줄 일 수 있다 고 말 했다.이것 은 과장 되 지만 이 를 통 해 알 수 있다.CoreData 는 확실히 매우 강하 다.
2.디자인 데이터 모델
iOS 개발 에서 SQL 데이터 베 이 스 를 사용 하여 대량의 표 구조 데 이 터 를 처리 하지만 SQL 은 매우 뚜렷 한 결함 이 있 습 니 다.일반적인 데이터 모델 의 표 에 대해 처리 하 는 데 문제 가 없습니다.예 를 들 어 한 학급 표,그 중에서 모든 데이터 에는 학급 이름,인원수 와 같은 속성 이 있 습 니 다.한 학생 표,그 중에서 모든 데 이 터 는 학생 의 이름,성별 이 있 습 니 다.나이 라 는 속성.그러나 표 와 표 사이 에 관 계 를 맺 으 려 면 사용자 정의 대상 과 사용자 정의 대상 간 에 종속 관 계 를 맺 고 SQL 로 처리 하 는 것 이 매우 번거롭다.예 를 들 어 이 학급 표 에 반장 의 속성 이 있다 면 이 속성 은 학생 유형 이다.
1.실체 유형 및 속성 생 성
Xcode 를 사용 하여 프로젝트 를 만 들 고 프로젝트 에 파일 을 새로 만 듭 니 다.Core Data 분류 에 있 는 DataModel 을 선택 하여 만 듭 니 다.다음 그림:
이 때 Xcode 의 파일 내 비게 이 션 영역 에 xcdatamodel 을 확장자 로 하 는 파일 이 나타 납 니 다.이 파일 은 데이터 모델 파일 입 니 다.Add Entity 단 추 를 누 르 면 실체 형식 을 추가 하고 SchoolClass 라 고 이름 을 지 으 며 이 유형 에 두 개의 속성 을 추가 합 니 다.각각 name 과 학생 수 stuNum 입 니 다.다음 그림:
2.실체 유형 설정
Xcode 오른쪽 도구 모음 에서 실체 종 류 를 설정 할 수 있 습 니 다.실체 종 류 를 선택 하면 다음 과 같 습 니 다.
Name 실체 형식의 이름 을 설정 합 니 다.Abstract Entity 설정 이 추상 적 인 실체 인지,선택 하면 이 실 체 는 실례 화 되 지 않 고 계승 만 할 수 있 습 니 다.예 를 들 어 하나의 실체 유형 으로 정의 되 고 사람의 실체 유형 에 계승 되 는 선생님,학생 등 을 정의 하여 실례 화 됩 니 다.Parent Entity 는 부모 클래스 의 실 체 를 선택 하고 Class 는 해당 하 는 클래스 를 설정 하 는 데 사 용 됩 니 다.
3.실체 대상 간 의 관계 구축
학생 클래스 실체 Student 를 만 들 고 name 과 age 두 속성 을 추가 합 니 다.SchoolClass 를 선택 하고 Relationships 모듈 에서+번 호 를 누 르 면 관 계 를 추가 합 니 다.다음 그림:
이때 SchoolClass 의 실체 유형 에는 Student 유형의 반장 속성 이 있 습 니 다.편집 스타일 을 바 꾸 면 실체 유형 간 의 관 계 를 더욱 뚜렷하게 볼 수 있다.다음 과 같다.
4.속성 과 관계 설정
속성 이나 관 계 를 선택 하 십시오.오른쪽 도구 모음 에서 속성 을 설정 할 수 있 습 니 다.다음 그림:
name 속성 이름 을 설정 합 니 다.optional 형식 은 선택 할 수 있 습 니 다.즉,예화 대상 에서 값 을 부여 할 수도 있 고 할당 하지 않 을 수도 있 습 니 다.Attribute 는 속성의 데이터 형식 을 설정 하고 Default Value 는 데이터 의 기본 값 을 설정 합 니 다.
2.데이터 모델 관리 클래스 NSManaged ObjectModel
NSManaged ObjectModel 을 통 해 생 성 된 데이터 모델 파일 을 모델 관리 클래스 대상 으로 읽 을 수 있 습 니 다.다음 과 같은 방법 을 사용 하 십시오.
4.567914.그 중에서 일부 속성 과 방법 으로 데이터 모델 의 관 리 를 한다.
// .xcdatamodeld url
NSURL *modelUrl = [[NSBundle mainBundle]URLForResource:@"Model" withExtension:@"momd"];
//
NSManagedObjectModel * mom = [[NSManagedObjectModel alloc]initWithContentsOfURL:modelUrl];
실체 설명 대상 NSEntity 에 대한 설명:실 체 는 데이터베이스 에 있 는 표 구조 와 유사 합 니 다.예 를 들 어 지난번 에 우리 가 만 든 학급 실체 모델 은 하나의 실체 모델 에 많은 속성 과 관 계 를 추가 할 수 있 습 니 다.NSEntityDescription 대상 에 이런 정 보 를 저장 할 수 있 습 니 다.주로 다음 과 같 습 니 다.
//
+ (nullable NSManagedObjectModel *)mergedModelFromBundles:(nullable NSArray<NSBundle *> *)bundles;
//
+ (nullable NSManagedObjectModel *)modelByMergingModels:(nullable NSArray<NSManagedObjectModel *> *)models;
//
@property (readonly, copy) NSDictionary<NSString *, NSEntityDescription *> *entitiesByName;
//
@property (strong) NSArray<NSEntityDescription *> *entities;
//
@property (readonly, strong) NSArray<NSString *> *configurations;
//
- (nullable NSArray<NSEntityDescription *> *)entitiesForConfiguration:(nullable NSString *)configuration;
//
- (void)setEntities:(NSArray<NSEntityDescription *> *)entities forConfiguration:(NSString *)configuration;
//
- (void)setFetchRequestTemplate:(nullable NSFetchRequest *)fetchRequestTemplate forName:(NSString *)name;
//
- (nullable NSFetchRequest *)fetchRequestTemplateForName:(NSString *)name;
NSProperty Description 류 는 데이터 모델 속성의 부모 클래스 이 고 NSAttribute Description 과 NSRelationship Description 은 모두 NSProperty Description 류 에 계승 되 며 NSAttribute Description 은 정상 적 인 유형의 속성 을 묘사 하고 NSRelationship Description 은 자체 정의 유형의 관 계 를 묘사 하 는 데 사용 된다.3.지속 적 인 저장 코 디 네 이 터 류 NSPersistentStore Coordinator
NSPersistentStore Coordinator 는 데이터 모델 과 로 컬 파일 이나 데이터베이스 간 의 관 계 를 구축 하고 로 컬 데 이 터 를 메모리 에 읽 거나 수 정 된 임시 데 이 터 를 영구적 으로 저장 합 니 다.초기 화 및 링크 데이터 영구 화 수신 대상 방법 은 다음 과 같 습 니 다.
//
@property (readonly, assign) NSManagedObjectModel *managedObjectModel;
//
@property (null_resettable, copy) NSString *managedObjectClassName;
//
@property (nullable, copy) NSString *name;
//
@property (getter=isAbstract) BOOL abstract;
//
@property (readonly, copy) NSDictionary<NSString *, NSEntityDescription *> *subentitiesByName;
//
@property (strong) NSArray<NSEntityDescription *> *subentities;
//
@property (nullable, readonly, assign) NSEntityDescription *superentity;
//
@property (readonly, copy) NSDictionary<NSString *, __kindof NSPropertyDescription *> *propertiesByName;
//
@property (strong) NSArray<__kindof NSPropertyDescription *> *properties;
//
@property (readonly, copy) NSDictionary<NSString *, NSAttributeDescription *> *attributesByName;
//
@property (readonly, copy) NSDictionary<NSString *, NSRelationshipDescription *> *relationshipsByName;
//
- (NSArray<NSRelationshipDescription *> *)relationshipsWithDestinationEntity:(NSEntityDescription *)entity;
//
- (BOOL)isKindOfEntity:(NSEntityDescription *)entity;
4.데이터 대상 관리 컨 텍스트 NSManaged ObjectContextNSManaged Object Context 는 데이터 관 리 를 하 는 핵심 클래스 입 니 다.저 희 는 이 종 류 를 통 해 데이터 의 삭제 와 수정 등 작업 을 합 니 다.그 중에서 자주 사용 하 는 방법 은 다음 과 같다.
//
- (instancetype)initWithManagedObjectModel:(NSManagedObjectModel *)model;
//
- (nullable __kindof NSPersistentStore *)addPersistentStoreWithType:(NSString *)storeType configuration:(nullable NSString *)configuration URL:(nullable NSURL *)storeURL options:(nullable NSDictionary *)options error:(NSError **)error;
//
- (BOOL)removePersistentStore:(NSPersistentStore *)store error:(NSError **)error;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
View의 레이아웃 방법을 AutoLayout에서 따뜻한 손 계산으로 하면 성능이 9.26배로 된 이야기이 기사는 의 15 일째 기사입니다. 어제는 에서 이었습니다. 손 계산을 권하는 의도는 없고, 특수한 상황하에서 계측한 내용입니다 화면 높이의 10 배 정도의 contentView가있는 UIScrollView 레이아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.