我正在使用KeyValueObjectMapping将JSON字符串转换为Model类。
这是JSON字符串:
@interface User : SRKObject
@property(nonatomic, strong) NSString *idStr;
@property(nonatomic, strong) NSString *name;
@property(nonatomic, strong) BOOL protected;
@property(nonatomic, strong) NSDate *createdAt;
@property(nonatomic, strong) NSArray *tweets;
@end
我为此创建了模型类,如下所示:
对于用户,
@interface Tweet : SRKObject
@property(nonatomic, strong) NSString *idStr;
@property(nonatomic, strong) NSString *text;
@property(nonatomic, strong) NSDate *createdAt;
@property(nonatomic, strong) Comments *comments;
@end
对于推文,
@interface Comments : SRKObject
@property(nonatomic, strong) NSString *idStr;
@property(nonatomic, strong) NSString *text;
@end
征求意见,
{{1}}
它工作得非常好,我正在接收数组中的推文。我收到tweet as user.tweets。
要将其保存在数据库中,我正在使用SharkORM进行ORM。但是在保存崩溃或者根本不保存推文的同时也是如此。
以下是在repo中打开的问题(但使用了不同的示例) - https://github.com/sharksync/sharkorm/issues/78
答案 0 :(得分:1)
崩溃的原因是存储在User对象中的Tweets数组的持久性,而不是将它们存储为单独的类。请参阅:This
最终你最终想要的是......
@interface Tweet : NSObject
@property(nonatomic, strong) User* user;
@property(nonatomic, strong) NSString *idStr;
@property(nonatomic, strong) NSString *text;
@property(nonatomic, strong) NSDate *createdAt;
@end
将所有推文存储在数组对象中只会快速打结(不进行搜索,不断增加保存时间)。
因此,当你获得JSON时,你可以映射第一个类没问题,然后迭代推文创建与User类相关的对象。
关联对象只是将.user属性设置为您创建或查询的相关用户实体的情况。
答案 1 :(得分:1)
感谢@Adrian_H的努力。我找到了解决方案并在这里发帖。
我在Tweet&中添加了以下代码注释模型将推文保存为NSArray,将注释保存为模型对象并且有效。
- (void)encodeWithCoder:(NSCoder *)aCoder;
-(id)initWithCoder:(NSCoder *)aDecoder;