2010-01-20 109 views
2

我剛剛開始使用Core Data,並遇到需要使用適當的ID保存新對象的問題。NSNumber numberWithInt:返回奇怪的數字?

我試圖在該行中添加下一個號碼作爲用戶添加對象的ID:

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:[NSEntityDescription entityForName:@"Favorites" inManagedObjectContext:managedObjectContext]]; 
[request setIncludesSubentities:NO]; 
NSError *err; 
NSUInteger count = [managedObjectContext countForFetchRequest:request error:&err]; 

NSManagedObjectContext *context = [fetchedResultsController managedObjectContext]; 
NSEntityDescription *entity = [[fetchedResultsController fetchRequest] entity]; 
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context]; 

[newManagedObject setValue:[NSNumber numberWithInt:count] forKey:@"favoritesID"]; 

如果我當時去在valueForKey:@「favoriteID」我得到的東西像「81933072」,這是錯誤的。

我檢查了count,它是正確的數字,它只是當我把它放入核心數據中,它變成別的東西。 favoriteID是一個int16 btw。

回答

9

valueForKey:將返回NSNumber,而不是一個整數。你需要撥打[myNumber integerValue]就可以了。

編輯:所以你要分配一個NSNumber到int16?這不會奏效。你應該改變你的變量類型。

+0

我認爲加拿大Dev意味着屬性「favoritesID」被定義爲核心數據中的Int16,它是一個NSNumber。 – gerry3 2010-01-20 04:48:07

+0

啊,我的錯。我認爲我的答案的第一部分仍然是要解決他的問題。 – 2010-01-20 06:38:29

+0

是的。 「favoritesID」是一個Int16,我可以在文檔中看到它是一個NSNumber對象。 – runmad 2010-01-20 16:16:27