2つのオブジェクト(SFCHChat
とSFCHMessages
)と1対多の関係を持つモデルがあります。RLMArrayからRLMLinkingObjectsへの移行
ため、私は今、生産に次の例外を取得レルム0.98から2.0へのアップグレードに:だから
Migration is required due to the following errors: - Property 'SFCHChat.chatId' has been made optional. - Property 'SFCHChat.lastReadedMessageId' has been made optional. - Property 'SFCHMessage.chat' has been added. - Property 'SFCHMessage.messageId' has been made optional. - Property 'SFCHMessage.chatId' has been made optional. - Property 'SFCHMessage.userId' has been made optional. - Property 'SFCHMessage.message' has been made optional. - Property 'SFCHUser.initials' has been made optional. - Property 'SFCHUser.userId' has been made optional. - Property 'SFCHChat.messages' has been removed.
を、私は+ (NSArray *)requiredProperties
にoptionalsを追加しましたが、それはおよそSFCHChat.messages
とSFCHMessage.chat
を行くためにどのように明確ではありません。ここでは、これらのオブジェクトのコードdiffは次のとおりです。
### SFCHMessage.h
[email protected] (readonly) SFCHChat *chat;
[email protected] SFCHChat *chat;
### SFCHMessage.m
-- (SFCHChat *)chat
-{
- return [[self linkingObjectsOfClass:@"SFCHChat" forProperty:@"messages"] firstObject];
-}
-
### SFCHChat.h
[email protected] RLMArray<SFCHMessage> *messages;
[email protected] (readonly) RLMLinkingObjects *messages;
### SFCHChat.m
++ (NSDictionary *)linkingObjectsProperties {
+ return @{
+ @"messages": [RLMPropertyDescriptor descriptorWithClass:SFCHMessage.class propertyName:@"chat"],
+ };
+}
+
要約するlinkingObjectsOfClass
は非推奨になったとして、私は、RLMLinkingObjects
プロパティにレルムオブジェクトの配列を移行しました。そこでオブジェクトをSFCHChat.messages
RLMArrayに追加するのではなく、SFCHMessage
にchat
プロパティを追加し、RLMLinkingObjects
でリンクバックしました。
(readonly)
に変更すると、レルムのプロパティを削除するように見えますが、削除するとプロパティを追加するように見えます。私のケースでは実際に移行ブロックが必要ですか?この移行はどのように実行しますか?