gpt4 book ai didi

ios - 将数组从 JSON 解析为 Realm

转载 作者:行者123 更新时间:2023-12-02 00:51:29 24 4
gpt4 key购买 nike

JSON:

"id": 13
"is_main": 1
"topic_id": 1
"images": [
0: {
"id": 188
"title": "One
}
0: {
"id": 192
"title": "Two"
}
]

所以 JSON 答案中有一个包含两个对象的数组。我的 Realm 模型如下所示:

@interface NewsRO : RLMObject

@property NSNumber <RLMInt> *newsID;
@property BOOL isMainNews;
@property NSNumber <RLMInt> *topicID;

@property NSArray *newsImages;
@property RLMArray <NewsImagesRO *><NewsImagesRO> *storedNewsImagesRO;

@end

和实现:

#import "NewsRO.h"

@implementation NewsRO

+ (NSString *)primaryKey
{
return @"newsID";
}

+ (NSArray<NSString *> *)ignoredProperties
{
return @[@"newsImages"];
}

- (void)setNewsImages:(NSArray *)newsImages
{
for (NSDictionary *dict in newsImages)
{
dispatch_sync(dispatch_queue_create("checkCashedImage", 0), ^{
NewsImagesRO *cashedObject = [NewsImagesRO objectForPrimaryKey:dict[[NKVHelper sharedInstance].kID]];
if ( cashedObject == nil || [cashedObject.newsImagePath isEqual:dict[[NKVHelper sharedInstance].kImagePath]] == NO )
{
NewsImagesRO *newsImage = [[NewsImagesRO alloc]init];
newsImage.newsImageID = dict[[NKVHelper sharedInstance].kID];
newsImage.newsImagePath = dict[[NKVHelper sharedInstance].kImagePath];
newsImage.newsImageTitle = dict[[NKVHelper sharedInstance].kImageTitle];
newsImage.newsImageWidth = dict[[NKVHelper sharedInstance].kImageWidth];
newsImage.newsImageHeight = dict[[NKVHelper sharedInstance].kImageHeight];
[self.storedNewsImagesRO addObject:newsImage];
}
});
}
}

- (NSArray *)newsImages {
return [self valueForKey:@"storedNewsImagesRO"];
}

@end

问题:

1)如何更好地将JSON数组解析为realm?

2)当我用我的方式解析 JSON 时,我应该检查缓存值吗?

最佳答案

您可以使用一些第三方框架来解析 JSON,例如 ObjectMapper ,另见https://github.com/realm/realm-cocoa/issues/694#issuecomment-144785299对于其他框架。

并且您可以使用 -addOrUpdateObject: 方法来更新具有主键的对象,请参阅 docs 中的更多信息。

关于ios - 将数组从 JSON 解析为 Realm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38121698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com