소셜 미디어 IOS 앱에서 액티브 레코드를 사용하는 방법 - 인형

IOS 앱에서 액티브 레코드를 사용하는 방법 - 인형

비디오: 스마트폰 음성녹음 앱 기능 갤럭시s10 사용법 2024

비디오: 스마트폰 음성녹음 앱 기능 갤럭시s10 사용법 2024
Anonim

Active Record 는 메모리 내 모델 객체의 클래스가 클래스의 지속성을 처리하는 메소드로 확장되는 간단한 패턴입니다. 다음은 PERSONTABLE이라는 테이블을 사용하여 관계형 데이터베이스에서 Person 클래스의 오브젝트를 데이터 저장소로 유지하는 예제입니다. 이것은 Person 클래스의 인터페이스 파일입니다.

@interface Person: NSObject {// 모델 속성 @private NSString * Name; @ 개인 NSString * SSNo;} - (id) 초기화; - (id) initWithOIDNameAndSSNo: (NSString *) OID: (NSString *) aName: (NSString *) aSSNo; - (NSString *) getName; - (NSString *) getSSNo; - (void) setName: (NSString *) aName; - (void) setSsno: (NSString *) aSSNo; - (void) setAsRetired; // 다른 작업 (있는 경우) -d

도메인 메서드 만이 인터페이스에 표시됩니다. 지속성에 필요한 추가 방법은 Persistable 프로토콜에 정의되어 있습니다.

typedef enum {NEW, EXISTS, CHANGED, DELETED} 상태; @protocol Persistable // 프로토콜에 필요한 속성 @required @property (copy) NSString * OID; // 데이터베이스의 고유 ID @required @property (읽기 전용) 상태; + (id) findByOID: (NSString *) OID; - (void) 삽입; - (void) 업데이트; - (void) delete; - (무효) 지속; -d

이 프로토콜은 두 가지 필수 속성을 선언합니다.

  • OID 속성: 이 속성은 영구 데이터 저장소에서 객체를 고유하게 식별하는 객체의 영구 ID를 보유합니다.

  • 상태 속성: 이 속성은 객체

    • 가 새로 생성되었는지 (상태가 NEW인지) 여부를 나타냅니다.

    • 데이터베이스에 존재합니다 (상태는 기존 임).

    • 데이터 저장소에서 가져온 후 메모리에서 수정되었습니다 (상태는 변경됨).

    • 삭제 대상으로 표시됩니다 (상태는 삭제됨). 그런 다음 프로토콜은 클래스가 구현해야하는 메소드 콜렉션을 선언합니다. FindByOid 클래스 메서드를 사용하여 데이터베이스의 객체를 메모리로 가져옵니다. (이러한 메소드는

finder 메소드로 알려져 있으며 findByName, findBySSNo 등과 같이 여러 가지 종류가있을 수 있습니다.)이 메소드를 Person 클래스에 구현하기위한 의사 코드는 다음과 같습니다.

+ (id) findByOID: (NSString *) anOID {Person * returnedPerson; // 데이터베이스에서 객체를 검색하는 SQL 문 // 검색된 NAME 및 SSNO를 로컬 변수 aName 및 anSSNo에 저장합니다. PERSONTABLE에서 NAME, SSNO를 선택합니다. 여기서 OID =: anOID INTO: aName,: anSSNo; aPerson = [[Person alloc] initWithOIDNameAndSSNo: anOID: anSSNo]; aPerson-> state = EXISTING;
이 메소드의 논리는 다음과 같습니다.

Embedded SQL SELECT 문은 데이터베이스에서 객체의 이름 및 사회 보장 번호 속성을 가져 와서이 값을 로컬 변수 aName 및 anSSNo에 저장합니다.

  • OID와 함께이 변수는 Person 클래스의 객체를 초기화하고 초기화하여 반환합니다.
  • 다음으로 Persistable 프로토콜에서 Person 클래스의 다른 메소드 구현을 볼 수 있습니다. persist 메서드는 다음과 같이 개체를 데이터베이스에 저장해야 할 때마다 호출됩니다.

- (void) persist {// 개체의 상태를 확인합니다. // 새 개체 인 경우 i. 이자형. state = NEW call [self insert] // PERSONTABLE에 항목을 만들려면 // state = EXISTS는 아무 것도하지 않습니다. // state = CHANGED 인 경우 업데이트를 호출하여 데이터베이스를 업데이트합니다. // 상태가 DELETED 인 경우 delete를 호출하여 정보를 제거합니다. // 데이터베이스에서}}

persist 메소드는 상태 변수를 사용하여 객체의 지속성에 적합한 메소드를 호출합니다.

- (void) insert {REPLACE INTO PERSONTABLE (OID, NAME, SSNO) VALUES: OID: Name: SSNo …}

  • 개체가 데이터베이스에서 검색되어 메모리에서 수정 된 경우 update 메서드가 호출됩니다. SSO OID =: OID …}

    개체가 데이터베이스에서 검색되고 메모리에서 삭제 표시가 된 경우 삭제 (999) - (void) 업데이트 {업데이트 가능한 설정 값 이름 =: 이름, SSNO =: SSNo WHERE OID = 메서드가 호출됩니다.
    
  • - (void) delete {OID =: OID; …}
    
  • 도메인 메소드와 파인더 메소드는 객체의 상태를 적절하게 설정해야합니다. 결과적으로 init는 객체의 상태를 NEW로 설정하고 findByOID는 상태를 EXISTING으로 설정하고 setAsRetired는 상태를 DELETED, setName 및 setSSN으로 설정하여 상태를 CHANGED (원래 상태가 기존 인 경우)로 설정할 수 있습니다. 에.

Active Record를 사용하여 관계형 데이터베이스에 객체를 저장하면 일반적으로 객체의 영구 변수가 해당 테이블의 필드에 매핑 된 상태로 객체가 데이터베이스 테이블에 매핑됩니다.

객체의 라이프 사이클 관리 로직은 데이터베이스에서 객체를 가져올시기를 결정하고, 데이터베이스의 동일한 객체에 해당하는 메모리에 중복 인스턴스를 허용할지 여부, 저장시기, 객체를 영구히 삭제할시기 등을 결정합니다. 응용 프로그램의 책임.

IOS 앱에서 액티브 레코드를 사용하는 방법 - 인형

편집자의 선택

계획하기 - 인형

계획하기 - 인형

학습 계획 PHR 또는 SPHR 시험을 준비하는 데 사용할 수있는 도구입니다. 따라서 귀하의 학습 계획이 귀하의 필요에 맞게 이루어지기를 바랍니다. 고려해야 할 사항은 시험 날짜, 공부에 바칠 수있는 시간, 귀하의 구체적인 강점 및 목표를 포함해야합니다.

PHR / SPHR 시험을 치러야합니까? - 인형

PHR / SPHR 시험을 치러야합니까? - 인형

일부 유명한 이론가들은 시험을 치러야하거나 마지막 순간 (시험 전주 또는 밤)까지 공부를 연기하는 것은 쓸모 없다고 말합니다. 단기 기억력 증가는 종종 다른 곳에 정보가 손실되는 것을 희생합니다. 왜냐하면 심야 학습이 정상적인 수면 패턴을 위반하는 경우 특히 그렇습니다. 왜냐하면 ...

편집자의 선택

Squarespace에서 웹 사이트의 색상을 변경하는 방법 - 인형

Squarespace에서 웹 사이트의 색상을 변경하는 방법 - 인형

디자인 응용 프로그램을 사용하면 컬러 휠에서 색상을 선택할 수 있으므로 Squarespace의 스타일 편집기에서 색상을 선택하면 집에서 편안하게 느낄 수 있습니다. 그러나 컬러 휠을 한번도 본 적이 없다면 사용하기 쉽기 때문에 걱정하지 마십시오. 바퀴에서 색상을 선택하는 방법 색상을 변경하려면 ...

Squarespace에서 적절한 크기와 가치를 선택하는 방법 - 인형

Squarespace에서 적절한 크기와 가치를 선택하는 방법 - 인형

귀하의 웹 사이트의 너비와 Squarespace의 텍스트 및 이미지의 크기에 따라 작업 할 무제한 캔버스가있는 것처럼 느낄 수 있습니다. 어떤면에서 이것이 사실이지만, Squarespace는 웹 사이트의 경계를 기본 크기로 설정하는 좋은 일을합니다.

Squarespace에서 상점 설정을 조정하는 방법 - 인형

Squarespace에서 상점 설정을 조정하는 방법 - 인형

사이트 관리자 → 상거래 → 점포 설정으로 이동하면 화면 상단에 상점이 작동하지 않음을 나타내는 큰 노란색 상자가 나타납니다. 스토어를 판매하려면 스토어를 사이트에서 지불을 수락하는 데 사용되는 지불 처리 서비스 인 Stripe에 연결해야합니다. ...

편집자의 선택

이 코드 및 Minecraft - 더미

이 코드 및 Minecraft - 더미

로 무작위 인 경우 > 은 임의로 지정되며 Minecraft에서 코드를 작성할 때 임의의 정수를 사용하여 코드는 임의의 방식으로 동작합니다. 정수는 숫자입니다. LearnToMod의 임의의 정수 수학 블록은 코드가 실행될 때마다 두 숫자 (예 : 1과 10) 사이의 임의의 숫자를 선택합니다. Minecraft에서 정수 사용하기. The ...

Minecraft Minigame - dummy

Minecraft Minigame - dummy

를 디자인하면 게임을 디자인해야합니다. Gameplay Loop는 게임을 재미 있고 도전적이며 완벽하게 진행할 수있는 간단한 과정입니다. Gameplay Loop에는 네 부분으로 구성되어 있습니다. 시작 : 기본 장면을 만듭니다. 목표 : 이기기위한 방법을 추가하고 ...

Minecraft에서 물과 얼음 효과를 창조하기 - 더미

Minecraft에서 물과 얼음 효과를 창조하기 - 더미

일부 실제 물리학이 게임 내에서 작동한다는 것입니다. 예를 들어, 물을 가지고 얼음을 넣으면 얼어 붙습니다! 좋아요, 현실 세계에서 얼음을 첨가해도 물이 얼지 않을 수도 있지만 더 추워집니다. 당신은 이것을 확인하실 수 있습니다 ...