Realm Blog

Realm ObjC & Swift 2.5: 쿼리 성능 향상, Swift 3.1 바이너리와 버그 픽스!

이 버전에서 읽거나 쓴 Realm 파일은 이전 버전 Realm에서 열 수 없고 기존 파일은 열 때 자동으로 업그레이드됩니다. 예전 버전 파일은 자동으로 열 수 있으며 읽기 전용 모드로 연 파일은 수정되지 않습니다. 기존 앱 업데이트에 주의하세요!

Realm Objective‑CRealm Swift 2.5 버전 릴리즈를 알려드립니다. 이번 릴리즈에서는 중첩 객체를 NULL과 비교하는 기능을 추가해서 구별 부호를 구분하지 않는 문자열 검색을 지원하는 쿼리를 강화했으며 여러 버그를 수정하여 앱 실행을 강화했습니다.

현재 Swift 3.0, 3.0.1, 3.0.2, 3.1을 위한 Swift 바이너리도 제작하고 있습니다.

동기화 Realm을 사용한다면 Realm 오브젝트 서버는 1.3.0 이상 버전으로 실행해야 합니다.

구별 부호를 구분하지 않는 문자열 쿼리

이제 문자열 비교 연산자에 [d] 수정자를 사용해서 é, ñ, ş 등의 구별 부호를 구분하지 않는 비교를 할 수 있습니다. 또한, 이를 대문자를 구분하지 않는 [c] 수정자와 조합할 수도 있습니다.

이해를 돕기 위한 예시입니다.

  • ==[d] 'u'ü와 매칭됩니다.
  • BEGINSWITH[d] 'e'étoile와 매칭됩니다.
  • CONTAINS[d] 'n'Piñata와 매칭됩니다.
  • ENDSWITH[d] 's'diaçrïtičş와 매칭됩니다.
  • ENDSWITH[cd] 'É'café와 매칭됩니다.

이 쿼리는 LIKE 비교에 적용할 수 없습니다.

멀티 레벨 객체를 NULL과 동등 비교

멀티 레벨 객체가 NULL인지 동등 비교하는 쿼리를 수행할 수 있게 됩니다.

class CircleObject: Object {
  dynamic var data = ""
  dynamic var next: CircleObject?
}
let realm = try Realm()
realm.objects(CircleObject.self).filter("next.next != nil AND next.next.next = nil")

추가 개선 사항

  • [[RLMRealm alloc] init]을 사용할 수 없다고 명시적으로 표시합니다.
  • 잘못된 속성 타입이 기본 키로 표시되면 오류 메시지에 문제 클래스의 이름을 표시합니다.

버그 픽스

  • 스키마가 동기화에 의해 병합된 후 간혹 컬럼 타입 Assertion이 잘못 만들어지던 버그가 수정됩니다.
  • 동기화 Realm을 열 때 빈 쓰기 트랜잭션이 발생하던 현상을 없앴습니다.
  • Realm 설정의 encryptionKey 값을 통해 동기화 Realm의 암호화를 지원합니다.
  • {NS}Data 속성을 16MB에 가깝게 설정해도 크래시가 발생하지 않습니다.
  • {NS}Data 속성을 잘못 읽고 nil을 반환하던 현상을 없앴습니다.
  • 쓰기 트랜잭션을 시작하는 동안 Realm 버전이 고정된 경우 증가하던 파일 크기를 줄였습니다.
  • 동기화 Realm에서 유효하지 않은 체인지셋을 풀링할 때 BadTransactLog 예외가 잡히지 않던 현상을 수정합니다.
  • 관찰하던 RLMArray/List가 수정된 후 삭제된 경우 발생하던 assertion 실패가 수정됩니다.

Xcode 8.3 참고 사항

가장 최신의 안정된 Xcode 버전을 사용해서 Objective‑C 바이너리를 생성하므로, 이번 주에는 Xcode 8.3이 사용돼야 합니다. 하지만 (rdar://31302382)에서 Xcode 8.3이 이전 Xcode보다 약 4배 큰 비트 코드 슬라이스로 바이너리를 생성하는 것을 알게 됐습니다. 이에 따라 iOS용 Realm Objective-C 프레임워크를 55MB에서 약 158MB로 가져옵니다. 따라서 Xcode 8.2를 사용해서 Objective-C 프레임워크를 계속 구축하기로 했습니다. 원하는 분은 Xcode 8.3을 사용한 Realm Objective-C 빌드를 선택할 수 있으며, App Store에서 애플리케이션이 제공되는 시점에는 비트 코드가 바이너리에서 제거되므로 최종 사용자에게 영향을 미치지는 않습니다.


읽어 주셔서 감사합니다. Realm과 함께 멋진 앱을 만들어 보세요! Stack Overflow, GitHub, Facebook 그룹에서 언제든지 저희에게 연락할 수 있습니다!


Realm Team

Realm의 미션은 더 나은 앱을 빠르게 개발할 수 있도록 돕는 것입니다. 이를 위해 저희는 개발자들이 실시간 협업, 가상 현실, 라이브 데이터 동기화, 오프라인 경험, 메시징 등 정교하고 강력한 기능을 쉽게 개발할 수 있도록 하는 개발 도구와 플랫폼을 제공하고 있습니다.

저희는 모바일 인터넷이 수많은 사용자와 보다 많은 디바이스가 속한 개방형 네트워크와 이들 간의 실시간 상호 작용으로 진화할 것이라고 믿으며, 개발자가 이같은 방향으로 발전할 수 있도록 돕기 위해 저희 제품들을 개발하고 있습니다.

이런 개발 뉴스를 더 만나보세요