패키지 io.realm

클래스 RealmObjectSchema


  • public abstract class RealmObjectSchema
    extends Object
    주어진 RealmObject 클래스의 스키마와 상호 작용하기 위한 클래스입니다. 이를 통해 특정 클래스의 필드를 검사, 추가, 삭제 또는 변경할 수 있습니다.

    RealmObjectSchema 를 변경할 수 없는 RealmSchema 에서 검색하면 이 RealmObjectSchema 도 변경되지 않습니다.

    다음도 참조하세요.
    RealmMigration
    • 메서드 세부 정보

      • getClassName

        public String getClassName()
        이 스키마가 나타내는 RealmObject 클래스의 이름을 반환합니다.

        • 일반 Realm 를 사용할 때 이 이름은 RealmObject 클래스와 동일합니다.
        • DynamicRealm 를 사용할 때 이는 클래스 이름이 필요한 모든 API 메서드에서 사용되는 이름입니다.
        반환합니다:
        이 스키마가 나타내는 RealmObject 클래스의 이름입니다.
        예외 처리:
        IllegalStateException - 이 스키마 정의가 더 이상 Realm의 일부가 아닌 경우
      • addField

        public abstract RealmObjectSchema addField​(String fieldName,
                                                   Class<?> fieldType,
                                                   FieldAttribute... attributes)
        RealmObject 클래스에 새로운 간단한 필드를 추가합니다. 유형은 Realm에서 지원하는 유형이어야 합니다. 지원되는 유형 목록은 RealmObject 를 참조하세요. 필드에서 null 값을 허용해야 하는 경우 대신 처럼 박스형 유형을 대신Integer.class int.class사용합니다.

        다른 RealmObject 또는 RealmList를 참조하는 필드를 추가하려면 addRealmObjectField(String, RealmObjectSchema) 또는 addRealmListField(String, RealmObjectSchema) 를 대신 사용합니다.

        매개변수:
        fieldName - 추가할 필드의 이름입니다.
        fieldType - 추가할 필드 유형입니다. See RealmObject for the full list.
        attributes - 이 필드에 대한 속성 세트입니다.
        반환합니다:
        업데이트된 스키마.
        예외 처리:
        IllegalArgumentException - 유형이 지원되지 않는 경우, 필드 이름이 잘못되었거나 해당 이름을 가진 필드가 이미 존재하는 경우입니다.
        UnsupportedOperationException - 이 RealmObjectSchema 값이 변경되지 않거나 FieldAttribute.PRIMARY_KEY 속성이 있는 필드를 동기화된 Realm의 스키마에 추가하는 경우
      • addRealmObjectField

        public abstract RealmObjectSchema addRealmObjectField​(String fieldName,
                                                              RealmObjectSchema objectSchema)
        다른 RealmObject 를 참고하는 새 필드를 추가합니다.
        매개변수:
        fieldName - 추가할 필드의 이름입니다.
        objectSchema - 참고하는 Realm 유형에 대한 스키마입니다.
        반환합니다:
        업데이트된 스키마.
        예외 처리:
        IllegalArgumentException - 필드 이름이 잘못되었거나 해당 이름을 가진 필드가 이미 존재하는 경우
        UnsupportedOperationException - 이 RealmObjectSchema 이(가) 변경되지 않는 경우.
      • addRealmListField

        public abstract RealmObjectSchema addRealmListField​(String fieldName,
                                                            Class<?> primitiveType)
        기본 값이 있는 RealmList 를 참고하는 새 필드를 추가합니다. 지원되는 유형 목록은 RealmObject 를 참조하세요.

        요소의 null 허용 여부는 올바른 클래스(예: int.class Integer.class )를 사용하여 정의됩니다. 또는 setRequired(String, boolean) 을 사용할 수 있습니다.

        예시:

         
         // Defines the list of Strings as being non null.
         RealmObjectSchema schema = schema.create("Person")
             .addRealmListField("children", String.class)
             .setRequired("children", true)
         
         
        목록에 다른 Realm 클래스에 대한 참고가 포함되어 있으면 대신 addRealmListField(String, RealmObjectSchema) 를 사용합니다.
        매개변수:
        fieldName - 추가할 필드의 이름입니다.
        primitiveType - 배열에 있는 요소의 단순 유형입니다.
        반환합니다:
        업데이트된 스키마.
        예외 처리:
        IllegalArgumentException - 필드 이름이 잘못되었거나, 해당 이름의 필드가 이미 존재하거나 요소 유형이 지원되지 않는 경우.
        UnsupportedOperationException - 이 RealmObjectSchema 이(가) 변경되지 않는 경우.
      • addRealmDictionaryField

        public abstract RealmObjectSchema addRealmDictionaryField​(String fieldName,
                                                                  Class<?> primitiveType)
        기본 값이 있는 RealmDictionary 를 참고하는 새 필드를 추가합니다. 지원되는 유형 목록은 RealmObject 를 참조하세요.

        요소의 null 허용 여부는 올바른 클래스(예: int.class Integer.class )를 사용하여 정의됩니다. 또는 setRequired(String, boolean) 을 사용할 수 있습니다.

        예시:

         
         // Defines the dictionary of Strings as being non null.
         RealmObjectSchema schema = schema.create("Person")
             .addRealmDictionaryField("parentAndChild", String.class)
             .setRequired("parentAndChild", true)
         
         
        목록에 다른 Realm 클래스에 대한 참고가 포함되어 있으면 대신 addRealmDictionaryField(String, RealmObjectSchema) 를 사용합니다.
        매개변수:
        fieldName - 추가할 필드의 이름입니다.
        primitiveType - 배열에 있는 요소의 단순 유형입니다.
        반환합니다:
        업데이트된 스키마.
        예외 처리:
        IllegalArgumentException - 필드 이름이 잘못되었거나, 해당 이름의 필드가 이미 존재하거나 요소 유형이 지원되지 않는 경우.
        UnsupportedOperationException - 이 RealmObjectSchema 이(가) 변경되지 않는 경우.
      • addRealmSetField

        public abstract RealmObjectSchema addRealmSetField​(String fieldName,
                                                           Class<?> primitiveType)
        기본 값이 있는 RealmSet 를 참고하는 새 필드를 추가합니다. 지원되는 유형 목록은 RealmObject 를 참조하세요.

        요소의 null 허용 여부는 올바른 클래스(예: int.class Integer.class )를 사용하여 정의됩니다. 또는 setRequired(String, boolean) 을 사용할 수 있습니다.

        예시:

         
         // Defines the set of Strings as being non null.
         RealmObjectSchema schema = schema.create("Person")
             .addRealmSetField("children", String.class)
             .setRequired("children", true)
         
         
        목록에 다른 Realm 클래스에 대한 참고가 포함되어 있으면 대신 addRealmSetField(String, RealmObjectSchema) 를 사용합니다.
        매개변수:
        fieldName - 추가할 필드의 이름입니다.
        primitiveType - 배열에 있는 요소의 단순 유형입니다.
        반환합니다:
        업데이트된 스키마.
        예외 처리:
        IllegalArgumentException - 필드 이름이 잘못되었거나, 해당 이름의 필드가 이미 존재하거나 요소 유형이 지원되지 않는 경우.
        UnsupportedOperationException - 이 RealmObjectSchema 이(가) 변경되지 않는 경우.
      • renameField

        public abstract RealmObjectSchema renameField​(String currentFieldName,
                                                      String newFieldName)
        필드 이름을 한 이름에서 다른 이름으로 바꿉니다.
        매개변수:
        currentFieldName - 이름을 바꿀 필드 이름입니다.
        newFieldName - 새 필드 이름입니다.
        반환합니다:
        업데이트된 스키마.
        예외 처리:
        IllegalArgumentException - 필드 이름이 존재하지 않거나 새 필드 이름이 이미 존재하는 경우.
        UnsupportedOperationException - 이 RealmObjectSchema 가 변경되지 않거나 동기화된 Realm의 경우
      • hasField

        public boolean hasField​(String fieldName)
        클래스에 지정된 이름으로 정의된 필드가 있는지 테스트합니다.
        매개변수:
        fieldName - 테스트할 필드 이름입니다.
        반환합니다:
        true 필드가 존재하면 false 를 반환합니다.
      • addIndex

        public abstract RealmObjectSchema addIndex​(String fieldName)
        지정된 필드에 인덱스를 추가합니다. 이는 필드에 Index 주석을 추가하는 것과 같습니다.
        매개변수:
        fieldName - 인덱스를 추가할 필드입니다.
        반환합니다:
        업데이트된 스키마.
        예외 처리:
        IllegalArgumentException - 필드 이름이 존재하지 않는 경우, 필드를 인덱싱할 수 없거나 이미 인덱스가 정의되어 있는 것입니다.
        UnsupportedOperationException - 이 RealmObjectSchema 이(가) 변경되지 않는 경우.
      • hasIndex

        public boolean hasIndex​(String fieldName)
        지정된 필드에 정의된 인덱스가 있는지 확인합니다.
        매개변수:
        fieldName - 확인할 기존 필드 이름입니다.
        반환합니다:
        true 필드가 인덱싱되면 false , 그렇지 않으면 입니다.
        예외 처리:
        IllegalArgumentException - 필드 이름이 존재하지 않는 경우.
        다음도 참조하세요.
        Index
      • 인덱스 제거

        public abstract RealmObjectSchema removeIndex​(String fieldName)
        지정된 필드에서 인덱스를 제거합니다. 이는 필드에서 @Index 주석을 제거하는 것과 동일합니다.
        매개변수:
        fieldName - 인덱스를 제거할 필드입니다.
        반환합니다:
        업데이트된 스키마.
        예외 처리:
        IllegalArgumentException - 필드 이름이 존재하지 않거나 필드에 인덱스가 없는 경우
        UnsupportedOperationException - 이 RealmObjectSchema 가 변경 불가능하거나 동기화된 Realm의 경우
      • addPrimaryKey

        public abstract RealmObjectSchema addPrimaryKey​(String fieldName)
        지정된 필드에 기본 키를 추가합니다. 이는 필드에 PrimaryKey 주석을 추가하는 것과 동일합니다. 또한 이는 필드에 Index 주석도 암시적으로 추가합니다.
        매개변수:
        fieldName - 프라이머리 키로 설정할 필드입니다.
        반환합니다:
        업데이트된 스키마.
        예외 처리:
        IllegalArgumentException - 필드 이름이 존재하지 않는 경우, 필드는 기본 키가 될 수 없거나 이미 기본 키가 정의되어 있습니다.
        UnsupportedOperationException - 이 RealmObjectSchema 가 변경 불가능하거나 동기화된 Realm의 경우
      • removePrimaryKey

        public abstract RealmObjectSchema removePrimaryKey()
        이 클래스에서 기본 키를 제거합니다. 이는 클래스에서 PrimaryKey 주석을 제거하는 것과 동일합니다. 또한 필드에서 Index 주석도 암시적으로 제거합니다.
        반환합니다:
        업데이트된 스키마.
        예외 처리:
        IllegalArgumentException - 클래스에 기본 키가 정의되어 있지 않은 경우.
        UnsupportedOperationException - 이 RealmObjectSchema 가 변경 불가능하거나 동기화된 Realm의 경우
      • setRequired

        public abstract RealmObjectSchema setRequired​(String fieldName,
                                                      boolean required)
        필드를 필수로 설정합니다(예: null 값을 보유할 수 없음). 이는 박스형 유형과 해당 기본 변형(예: Integer 에서 int) 간에 전환하는 것과 같습니다.

        지정된 필드의 유형이 값 목록( RealmObject가 아닌 경우, 지정된 null 허용 여부는 필드 자체에는 영향을 주지 않고 해당 요소에만 영향을 미칩니다. 값 목록 자체는 항상 null을 허용하지 않습니다.

        매개변수:
        fieldName - 클래스의 필드 이름입니다.
        required - 필드가 필수이면 true , 그렇지 않으면 false 입니다.
        반환합니다:
        업데이트된 스키마.
        예외 처리:
        IllegalArgumentException - 필드 이름이 존재하지 않는 경우, Required 주석을 가질 수 없거나 필드가 이미 필요에 따라 설정된 경우
        UnsupportedOperationException - 이 RealmObjectSchema 이(가) 변경되지 않는 경우.
        다음도 참조하세요.
        Required
      • setNullable

        public abstract RealmObjectSchema setNullable​(String fieldName,
                                                      boolean nullable)
        필드를 null 허용으로 설정합니다(즉, null 값을 보유할 수 있어야 함). 이는 기본 유형과 해당 박스형 변형(예: int 에서 Integer) 간에 전환하는 것과 같습니다.

        지정된 필드의 유형이 값 목록( RealmObject가 아닌 경우, 지정된 null 허용 여부는 필드 자체에는 영향을 주지 않고 해당 요소에만 영향을 미칩니다. 값 목록 자체는 항상 null을 허용하지 않습니다.

        매개변수:
        fieldName - 클래스의 필드 이름입니다.
        nullable - 필드가 null을 허용해야 하면 true , 그렇지 않으면 false 입니다.
        반환합니다:
        업데이트된 스키마.
        예외 처리:
        IllegalArgumentException - 필드 이름이 존재하지 않거나 null 허용으로 설정할 수 없는 경우.
        UnsupportedOperationException - 이 RealmObjectSchema 이(가) 변경되지 않는 경우.
      • isRequired

        공개 부울 isRequired(문자열 fieldName)
        지정된 필드가 필수인지, 즉 null 값을 포함할 수 없는지 확인합니다.
        매개변수:
        fieldName - 확인할 필드입니다.
        반환합니다:
        true 필요하면 false , 그렇지 않으면 .
        예외 처리:
        IllegalArgumentException - 필드 이름이 존재하지 않는 경우.
        다음도 참조하세요.
        setRequired(String, boolean)
      • isNullable

        공개 부울 isNullable(문자열 fieldName)
        지정된 필드가 null을 허용하는지, 즉 null 값을 포함할 수 있는지 확인합니다.
        매개변수:
        fieldName - 확인할 필드입니다.
        반환합니다:
        true 필요하면 false , 그렇지 않으면 .
        예외 처리:
        IllegalArgumentException - 필드 이름이 존재하지 않는 경우.
        다음도 참조하세요.
        setNullable(String, boolean)
      • isPrimaryKey

        public boolean isPrimaryKey​(String fieldName)
        지정된 필드가 기본 키 필드인지 확인합니다.
        매개변수:
        fieldName - 확인할 필드입니다.
        반환합니다:
        true 기본 키 필드인 경우 그렇지 않으면 false 를 반환합니다.
        예외 처리:
        IllegalArgumentException - 필드 이름이 존재하지 않는 경우.
        다음도 참조하세요.
        addPrimaryKey(String)
      • hasPrimaryKey

        공개 부울 hasPrimaryKey()
        클래스에 기본 키가 정의되어 있는지 확인합니다.
        반환합니다:
        true 기본 키가 정의되어 있으면 false , 그렇지 않으면
        다음도 참조하세요.
        PrimaryKey
      • getPrimaryKey

        public String getPrimaryKey()
        기본 키 필드의 이름을 반환합니다.
        반환합니다:
        기본 키 필드의 이름입니다.
        예외 처리:
        IllegalStateException - 클래스에 기본 키가 정의되어 있지 않은 경우.
      • getFieldNames

        public Set<String> getFieldNames()
        이 클래스의 모든 필드를 반환합니다.
        반환합니다:
        이 클래스에 있는 모든 필드의 목록입니다.
      • getFieldType

        public RealmFieldType getFieldType​(String fieldName)
        이 필드를 나타내기 위해 기본 storage engine에서 사용하는 유형을 반환합니다.
        매개변수:
        fieldName - 대상 필드의 이름입니다.
        반환합니다:
        Realm에서 이 필드를 나타내는 데 사용하는 기본 유형입니다.
      • isEmbedded

        공개 부울 isEmbedded()
        이 유형의 객체가 '포함된' 것으로 간주되면 true 을 반환합니다. 자세한 내용은 RealmClass.embedded() 를 참조하세요.
        반환합니다:
        true 이 유형의 객체가 포함된 경우. 그렇지 않은 경우 false .
      • setEmbedded

        public void setEmbedded​(boolean embedded)
        클래스를 포함할지 여부를 변환합니다.

        클래스는 다음 불변성이 충족되는 경우에만 포함된 것으로 표시될 수 있습니다.

        • 클래스에는 기본 키가 정의되어 있을 수 없습니다.
        • 이 유형의 모든 기존 객체에는 이미 해당 상위 객체를 가리키는 정확히 하나의 상위 객체가 있어야 합니다. 0개 또는 2개 이상의 객체에 표시되는 것으로 표시될 객체에 대한 참고가 포함된 경우 IllegalStateException 가 발생합니다.
        예외 처리:
        IllegalStateException - 일부 내장된 객체 불변성을 깨트려 클래스를 변환할 수 없는 경우.
        다음도 참조하세요.
        RealmClass.embedded()