2013-05-30 150 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「,但它沒有實際的註釋。

希望這會有所幫助!