본문 바로가기

IT/iOs

Realm 에러 모음

Realm 에러 모음

 

이 포스팅은 렘 관련 오류가 나면 원인과 해결법을 적어놓는 용으로 계속 업데이트하겠습니다.

 

 

 

1. requires a protocol defining the contained type - example: RLMArray<Person>

#import <Realm/Realm.h>

#import "Transaction.h"

@interface Account : RLMObject

@property NSString *primaryKey;

@property RLMArray<Transaction *>*transactions;

@end

 

위처럼 Account모델을 만들었습니다.

RLMArray 형으로 모델에 transactions 프로퍼티를 만들었는데 아래와 같은 오류 메시지가 나오면서 crash가 납니다.

 

*** Terminating app due to uncaught exception 'RLMException', reason: 'Property 'transactions' requires a protocol defining the contained type - example: RLMArray<Person>.'

Cannot find protocol declaration for ‘LoanTransaction’

 

아래처럼 Transaction에 대한  class, protocol을 선언해주면 해결됩니다.

 

#import <Realm/Realm.h>

@class Transaction;

@protocol Transaction;

@interface Account : RLMObject

@property NSString *primaryKey;

@property RLMArray<Transaction *><Transaction> *transactions;

@end

 

 

 

 

 

2. ***Terminating app due to uncaught exception 'RLMException', reason: 'Attempting to create an object of type 'ChildModel' with an existing primary key value 'key_0303'.'



주키가 설정되어있는 모델이 참조되는 RLMArray에 업데이트하기 전에 add(append)해서 생기는 문제였습니다.



해결 방안
[realm addOrUpdateObject:childModel];
[linkedModel.array addObject:childModel];
위처럼 업데이트를 먼저 해주면 됨



3. *** Terminating app due to uncaught exception 'RLMException', reason: ''LoanAccount' does not have a primary key and can not be updated'

 

주키(primaryKey)가 설정 안 되어있는데 update를 시행해서 발생한 crash입니다.