2011-02-23 56 views
1

我有一個iPhone應用程序,我想維護用戶的配置文件信息。 我也有一個朋友的列表。如何確保核心數據實體的單個實例

配置文件中包含的信息字段與朋友的信息字段相同。

我有一個朋友的核心數據實體。

我應該爲個人資料製作一個單獨的實體還是僅使用朋友實體。

如果我使用單獨的實體,我如何確保只有一個配置文件實例。

如果我使用朋友實體,我如何確保在爲朋友表視圖獲取朋友列表時不顯示個人資料信息。

在此先感謝。

回答

0

你怎麼樣讓一個表屬性,如

Name (NSString) 
... 
//your desired attributes which are common to both 
isFriend (BOOL)//to keep track of profile type 

這樣你就不需要做兩個實體。

1

您應該重新思考自己的命名約定,以便更容易地查看對象模型。

有辦法我看到它,你有一個名爲'成員'的實體,包含你現在擁有的所有屬性,加上一個多對多的「isFriend」與自身的關係。

這樣,任何「朋友」都可以成爲「個人資料」,任何「個人資料」都可以成爲「朋友」。它也會使你非常直接地實例化一個'成員'對象並把它所有的'朋友'拉下來。

至於確保只有一個配置文件的實例,你將需要每個實例的唯一標識符 - 沒有太多的背景知道你想要達到什麼目的,我建議你考慮擁有一個用戶名或電子郵件地址字段,您可以使用它作爲參數執行fetchRequest,並在允許成員註冊/創建新配置文件之前查看是否獲得任何現有匹配。

+0

好的!謝謝。如何根據字段進行提取請求。例如。獲取所有名稱=「我的名字」(我的個人資料)。所以我可以填充只有朋友的列表? – klyngbaek 2011-02-23 10:08:32

+0

這裏粗略地說,如果你有一個myName字符串,你不想獲取的名字 - 「NSFetchRequest * fetchRequest = [[NSFetchRequest alloc] init]; NSPredicate * predicate = [NSPredicate predicateWithFormat:@「(name!=%@)」,myName]; [fetchRequest setPredicate:predicate]; NSEntityDescription * entity = [NSEntityDescription entityForName:@「Member」inManagedObjectContext:self.managedObjectContext]; [fetchRequest setEntity:entity]; NSError * error; NSArray * arrayOfObjects = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];' – Rog 2011-02-23 10:17:45