2012-12-10 67 views
5

好吧,所以我對iOS仍然很陌生並且對一些事情感到困惑。 首先,這裏是我的實體... E.R.D向核心數據(多對多關係)添加記錄時出現NSSet錯誤

我已經在那裏數據明智是一個水果(蘋果)和一個來源(樹)。它們都保存在數據庫中。

接下來我想添加一個橙色,但與'樹'有關係。因此,這是我在用的:

Fruit *fruit = (Fruit *)[NSEntityDescription insertNewObjectForEntityForName:@"Fruit" inManagedObjectContext:managedObjectContext]; 
    fruit.fruitName = @"Orange"; 
    NSSet *test = [NSSet setWithObject:fruit]; 
    [_source addSourceFruit:test]; 

NSLog(@"4"); 

fruit.fruitSource = _source; 

(_source是「樹」,我進行了一個獲取對源實體「樹」請求到一個數組,然後把objectAtIndex:0(樹)和分配它

data = [managedObjectContext executeFetchRequest:request error:&error]; 


    Source *_source = [data objectAtIndex:0]; 

和存取方法對源實體的一個點:。

- (void)addSourceFruitObject:(Fruit *)value; 
- (void)removeSourceFruitObject:(Fruit *)value; 
- (void)addSourceFruit:(NSSet *)values; 
- (void)removeSourceFruit:(NSSet *)values; 

我發現與包一個答案,但我不能完全肯定他們 醫管局我我已經讀過這個'https://developer.apple.com/library/mac/#documentation/CoreFOundation/Conceptual/CFBundles/AboutBundles/AboutBundles.html'和'https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdAccessorMethods.html',但我似乎並沒有很好地把握它。

編輯:該錯誤是

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSSet intersectsSet:]: set argument is not an NSSet' 
*** First throw call stack: 

回答

3

我相信你通過更換sourceFruit集混淆核心數據。核心數據保持相反的關係。這意味着您只需設置fruit.fruitSource = _source;即可瞭解物體如何連接。你可以使用[_source addSourceFruitObject:fruit];而不是,但這對我來說似乎不那麼簡潔。

(旁白:這是避免使用_name風格變量的命名的一個好主意,它已成爲一個標準使用形式的實例變量是背性質的東西。)

+0

好了,通過刪除NSSet的部分(NSSet * test = [NSSet setWithObject:fruit]; [_source addSourceFruit:test]; )它現在拋出'問題保存:操作無法完成。 (可可錯誤1570.)'這意味着什麼是空白/零,但我不知道是什麼。對不起隊友我不知道我是如何登陸這樣的網站哈哈! – Craig

+0

給你一個勾號,因爲插入似乎工作正常,只是保存它哈哈! – Craig

+1

我無法知道我所看到的是什麼。不用記錄'@「4」',你可以打印'_source'和'fruit'的值來查看是否有任何線索。 –