5

次のような単純なレルム オブジェクトがあります。

@interface Person : RLMObject
@property NSString *name;
@end

RLM_ARRAY_TYPE(Person)
  • テスト プロジェクトの「ターゲット メンバーシップ」を既に有効にしています

今、私はこのように realm.io で何かをテストするのが好きです:

#import <XCTest/XCTest.h>
#import "Person.h"

@interface PersonTests : XCTestCase
@end

@implementation PersonTests

- (void)setUp {[super setUp];}
- (void)tearDown {[super tearDown];}
- (void)testFooBar
{
    // !!! the test crashes right here!!!!
    Person *person = [[Person alloc] init];


    person.name = @"foobar";

    RLMRealm *realm = [RLMRealm defaultRealm];

    [realm beginWriteTransaction];
    [realm addObject:person];
    [realm commitWriteTransaction];

    ......
}

...しかし、テストは最初の行 (Person *person = [[Person alloc] init];) で次のエラーでクラッシュします

*** キャッチされない例外 'RLMException' が原因でアプリを終了します。理由: 'objectClass は RLMObject から派生する必要があります'

私が間違っていることを誰かが知っていますか?ヒントに感謝します!!

4

1 に答える 1

2

私は同じエラーを抱えていました.4時間後にポッドを削除、クローン、クリーン、再インストールし、繰り返しました...私にとってうまくいくのは次のとおりです。

ポッドファイル

link_with 'MyProject', 'MyProjectTests'

#common pods such as CocoaLumberjack

pod 'Realm', '0.89.0'

target 'MyProjectTests', exclusive: true do
  pod 'Realm/Headers'
end

テストファイル

#import <UIKit/UIKit.h>
#import <XCTest/XCTest.h>
#import <Realm/Realm.h>
#import "RealmObjectSubclass.h"

- (void)setUp {
  [super setUp];
  NSString *resourcePath = [NSBundle bundleForClass:[self.class]].resourcePath;
  NSString *testRealPath = [NSString stringWithFormat:@"%@.test", resourcePath];
  [RLMRealm setDefaultRealmPath:testRealPath];
}
于 2015-01-23T09:47:30.380 に答える