更新我有從後端一個對象作爲這樣對象被替換,而不是在境界目標C
dummyObj{ name, number, image and id }
我已在RLMObject模型另一個布爾屬性稱爲isFav
加入。我在我的模型上調用了方法primaryKey
,並將id
設置爲主鍵。
問題是我每次更新我的對象時,isFav
屬性被替換爲0,它的舊值不會保持不變。
我已經在另一個應用程序中實際使用過這個場景,並且它正常工作,唯一的例外是我使用的是較早的領域版本。
目前我使用的具體方法是:
DummyObj *testObj = [DummyObj mj_objectWithKeyValues:jsonDic];
[DummyObj createOrUpdateInDefaultRealmWithValue:testObj];
的mj_objectWithKeyValues
是MJExtension庫JSON模型映射。
我也試過[realm addOrUpdateObject: testObj];
我還實施了方法defaultPropertyValues
在我的模型,爲isFav
屬性設置爲默認值,後來我刪除它一起,仍然對象被替換,而不是更新了相同的ID。
,並從文檔
請注意,更新對象時,
NSNull
仍被視爲可選屬性的有效值。如果您提供一個包含NSNull
屬性值的字典,則這些字典將應用於您的對象,並且這些屬性將被清空。爲確保您不會遇到任何計劃外數據丟失,請確保僅提供使用此方法時希望更新的屬性。
但實際上我只提供了我希望更新的屬性,但它更新了isFav
屬性。
爲dummyObj確切類是
#import <Foundation/Foundation.h>
#import <Realm/Realm.h>
#import "Tags.h"
#import "BusinessCategory.h"
#import <MJExtension/MJExtension.h>
RLM_ARRAY_TYPE(Tags)
RLM_ARRAY_TYPE(BusinessCategory)
@interface HotlineNumber : RLMObject
@property NSString *hotlineName;
@property NSString *hotlineNumber;
@property NSString *hotlineImage;
@property NSInteger hotlineID;
@property BOOL isFav;
@property RLMArray<BusinessCategory> *categories;
@property RLMArray<Tags> *hotlineTags;
@end
和我的執行文件是:
#import "HotlineNumber.h"
@implementation HotlineNumber
//
//+ (NSDictionary *) defaultPropertyValues{
//
// NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
// dict[@"isFav"] = @NO;
//
// return dict;
//}
+ (NSString *) primaryKey {
return @"hotlineID";
}
+ (NSDictionary *) mj_objectClassInArray{
return @{
@"categories" : @"BusinessCategory",
@"hotlineTags": @"Tags"
};
}
@end
和我jsonDict如下 { "hotlineID": 241, "hotlineName": "Abaza Auto Trade", "hotlineNumber": "16876", "hotlineImage": "", "categories": [ { "catId": 92, "catName": "Automotive", "catIcon": "", "catColor": "#03a9f4", "catOrder": "", "isParent": "false" } ], "hotlineTags": [ ] }
您可以分享您的'DummyObj'類的聲明,以及您傳遞給'+ mj_objectWithKeyValues:'的'jsonDic'的確切內容嗎? – bdash
@bdash我添加了確切的內容。 :) –