在Objective-C中,使用核心數據,我正在獲取實體並將它們作爲NSArrays返回。我意識到我經常抓取,我可以利用實體的返回值,例如:客戶實體有很多發票,發票有很多ItemSold。下面是一些代碼我使用:爲什麼我的NSArray變成了NSSet?
NSError *error = nil;
// fetch all customers
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Customer"
inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
self.fetchedCustomers = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (fetchedCustomers == nil) {
NSLog(@"ERROR");
}
[fetchRequest release];
// end of customer fetch
這是簡單讀取請求,並fetchedCustomers被設置爲一個NSArray財產。然後,我使用它的功能:
self.fetchedInvoices = [[customerToView valueForKey:@"invoices"] allObjects];
這工作,我能夠正確顯示發票號和日期到一個表。不過,我接下來要使用:
self.fetchedObjects = [[fetchedInvoices valueForKey:@"itemsSold"] allObjects];
後來,當我嘗試添加總計我做了以下內容:
double price = [[[fetchedObjects objectAtIndex:i] valueForKey:@"Price"] doubleValue];
而且我得到以下錯誤:
-[__NSCFSet doubleValue]: unrecognized selector sent to instance 0x10228f730
爲什麼有沒有涉及NSSet?當我使用謂詞獲取發票和項目時,我沒有任何問題,但它看起來效率很低。我寧願弄清楚這裏出了什麼問題。任何幫助將不勝感激,謝謝。
額外的信息:感興趣
地區:
@interface Invoice : NSManagedObject {
@private
}
@property (nonatomic, retain) NSSet *itemsSold;
@end
@interface Invoice (CoreDataGeneratedAccessors)
- (void)addItemsSoldObject:(ItemSold *)value;
- (void)removeItemsSoldObject:(ItemSold *)value;
- (void)addItemsSold:(NSSet *)values;
- (void)removeItemsSold:(NSSet *)values;
@end
是什麼類型的房地產價格? – lnafziger
這是一個NSNumber。 – Rail24
你確定嗎?嘗試'NSLog([[[fetchedObjects objectAtIndex:i] valueForKey:@「Price」] class];'在你的行加上'doubleValue'之前 – lnafziger