2014-03-07 83 views
0

我有一個CoreData對象Player,具有與目標的多對多關係。我想補充一個目標對象,像這樣,CoreData將對象添加到一對多關係錯誤

Goal *fg =(Goal*)[self.database createGoalObject]; //Custom function 

Player* player = (Player*)[NSEntityDescription insertNewObjectForEntityForName:@"Player" inManagedObjectContext:self.database.managedObjectContext]; 

[player addGoalsObject:fg]; 

我的應用與以下錯誤打破:

'NSInvalidArgumentException', reason: '-[__NSCFSet entity]: unrecognized selector sent to instance 0x8d90f00' 

在調試提示一個PO表示0x8d90f00是一個目標對象。我的問題是:

  1. 爲什麼核心數據向目標對象發送消息?
  2. 爲什麼Player初始化爲零的目標關係?它應該不是一個空集,直到加載?
  3. 是否必須重寫Player.h中的addGoalsObject以手動設置值?
+0

你可以顯示'createGoalObject'方法嗎? – Akhilrajtr

回答

1

錯誤特別說什麼想呼籲的__NSCFSetentity方法。換句話說,0x8d90f00的對象是某種類型的NSSet。

你被的po 0x8d90f00輸出稍微誤導,因爲NSSet中的description方法將包括它所包含的對象,包裹在{()}字符的描述。

如果您完成了po [0x8d90f00 class]它會回覆NSSetNSMutableSet

您的createGoalObject正在返回一個集合。

+0

你說得對。 po 0x8d90f00顯示了它包含的對象的描述。 po [0x8d90f00類]確實使用__NSCFSet進行響應。不知道我接近解決這個問題。 –