【发布时间】:2012-10-29 20:20:53
【问题描述】:
设置
想象一下作者和书之间的以下关系:
[Author] -- has many --> [Book]
使用 restkit,我有一个 Author 模型和一个 Book 模型,我创建 Author 和 Book 之间的关系如下:
[authorMapping hasMany:@"books" withMapping:booksMapping];
我现在可以通过作者的属性访问作者的书籍:
@property (strong, nonatomic) NSSet *books;
到目前为止一切顺利。同样,我想通过它的属性访问一本书的作者:
@property (weak, nonatomic) Author *author;
问题
这就是问题的开始。为了实现这种反比关系,我添加了以下内容:
[booksMapping hasOne:@"author" withMapping:authorMapping];
这导致每个映射递归地相互调用,直到程序终止。一点都不好。检查文档我发现 hasOne/Many:withMapping: 方法只是调用 mapKeyPath:toRelationShip:withMapping: 所以那里没有真正的替代方案。此外,添加如下映射:
[bookMapping mapKeyPath:@"author" toAttribute:@"author"];
显然,只会创建映射,但不会将 Author 对象实际映射到 Book 的 author 属性。
问题
如何使用 RestKit 而不是 CoreData 在两个或多个模型之间创建反向一对多关系?
【问题讨论】:
-
Muncken,您是否有不想使用 Core Data 的特定原因?我发现 Core Data 非常值得最初的学习曲线,它使对象关系映射非常简单。
-
加载的数据一直在变化,所以我没有理由坚持下去(作者->书案只是一个简化的例子来说明问题)。此外,我发现 coredata 使测试显着复杂化,因此我定义使用它会弊大于利(不过,我确实找到了 Graham Lee 的博客文章 bit.ly/UNzKFL,这有助于解决测试问题,稍后)。
标签: iphone ios restkit one-to-many