2013-05-30 77 views
0

我正在寻找一些ios应用程序的一对多关系的一些体系结构指导,后者在stackmob(baas)上运行。stackmob 1对多关系体系结构

在我的项目中,我想实现类似Facebook的帖子流。用户将被允许向帖子写评论。

1篇帖子 - >无评论

当我创建的帖子我只想显示评论数的视图(iOS版的UITableView)。实际的评论将显示在子视图中。什么是实施这个最好的方法?我应该如何查询这些相关的对象?

如果我第一次获取所有职位,然后为每个岗位我要查询我怕碰上性能问题:-(

评论数你的建议是有关查询1个TO-许多关系没有产生太多的http开销...

我发现这篇文章,我至少了解到,StackMob不支持关系的属性(任务,其中project.user == X)的支持:

NSPredicate traversing relationship (StackMob)

感谢您的支持!

干杯,

+0

我依赖。你会使用CoreData吗? – LuisCien

+0

是的,我会通过stackmobs使用CoreData ios sdk –

+0

好的,我会尽快发布答案。 – LuisCien

回答

0

我假设你读过this tutorial

CoreData使用一种称为“错误”的机制来减少应用程序的内存使用量。 从苹果公司的docs

“的故障是代表尚未完全实现一个管理对象,或表示的关系的集合对象的占位符对象”

这意味着,当你阅读一个来自CoreData的实体,它不会读取整个对象图来填充这个实体。

就你而言,如果你阅读了“发布”实体,它将不会阅读与该帖子相关的所有评论。即使您使用StackMob作为DataStore,情况也是如此。

我做了一个非常小的项目只是为了测试这个,这就是我得到的。通过使用嗅探器查尔斯我能够看到提取的请求/响应。 One-to-many relationship

这里是我使用的查询:

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Post" inManagedObjectContext:self.managedObjectContext]; 
[fetchRequest setEntity:entity]; 

[self.managedObjectContext executeFetchRequest:fetchRequest onSuccess:^(NSArray *results) { 

    for (NSManagedObject *managedObject in results) { 
     NSArray *comments = [managedObject valueForKey:@"comments"]; 
     NSLog(@"Post comments: %d", comments.count); 
    } 

} onFailure:^(NSError *error) { 
    NSLog(@"Error fetching: %@", error); 
}]; 

这里是我得到的回应(使用查尔斯)

[ 
    { 
    "post_id": "85FC22A1-92ED-484B-9B52-78CBFE464E5D", 
    "text": "Post1", 
    "lastmoddate": 1370916620273, 
    "createddate": 1370915371016, 
    "comments": [ 
     "5F421C86-F7E7-4BAD-AB21-F056EB7D9451", 
     "C1CD96E2-856A-43F0-A71D-09CF14732630", 
     "BAD9F652-C181-4AA1-8717-05DD5B2CA54E", 
     "AC7D869B-A2BD-4181-8DCF-21C8E127540F", 
     "2D1A1C80-9A80-48AE-819D-675851EA17D6" 
    ] 
    }, 
    { 
    "post_id": "8A84BE1B-6ECE-4C49-B706-7981490C5C2E", 
    "text": "Post2", 
    "lastmoddate": 1370916678114, 
    "createddate": 1370915379347, 
    "comments": [ 
     "3C001706-2D91-4183-9A07-33D77D5AB307", 
     "E7DC3A89-2C3D-4510-83E5-BE13A9E626CF", 
     "2874B59C-781B-4605-97C7-E4EF7965AF4E" 
    ] 
    }, 
    { 
    "post_id": "13E60590-E4E7-4012-A3E2-2F0339498D94", 
    "text": "Post3", 
    "lastmoddate": 1370916750434, 
    "createddate": 1370915398649, 
    "comments": [ 
     "AEA3E5E3-E32E-4DAA-A649-6D8DE02FB9B2", 
     "DFCBD7E2-9360-4221-99DB-1DE2EE5590CE", 
     "484E6832-3873-4655-A6C1-0303A42127D9", 
     "B2316F8B-0AAF-451F-A91C-9E8B4657B1A5" 
    ] 
    } 
] 

你可以从响应看到,所有的“注释“数组中有存储在StackMob中的注释的”Id“,但它没有实际的注释。

希望这会有所帮助!