【发布时间】:2012-02-21 20:04:45
【问题描述】:
我在尝试设置我的属性“phoneNumber”时一直遇到此异常:
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“- [SearchResult setPhoneNumber:]: unrecognized selector sent to instance 0x256b40”
这是具有 phoneNumber 属性的类:
@interface SearchResult : NSManagedObject
@property (nonatomic, retain) NSString * phoneNumber;
@end
@implementation SearchResult
@dynamic phoneNumber;
@end
问题是当我这样做时:
SearchResult *managedObject = [self findExistingSearchResultById:restaurantId];
if(managedObject == nil)
{
managedObject = [NSEntityDescription insertNewObjectForEntityForName:@"SearchResult" inManagedObjectContext:managedObjectContext];
}
// Exception throws here.
managedObject.phoneNumber = @"1234567890";
这里是 findExistingSearchResult 方法:
+ (SearchResult *)findExistingSearchResultById:(NSString *)restaurantId
{
NSManagedObjectContext *managedObjectContext = serviceContext;
NSFetchRequest *request = [[NSFetchRequest alloc]init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"SearchResult" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"restaurantId = %@", restaurantId];
[request setPredicate:predicate];
NSError *error = nil;
NSArray *fetchedObjects = [managedObjectContext executeFetchRequest:request error:&error];
if(fetchedObjects != nil)
{
return [fetchedObjects lastObject];
}
else
{
return nil;
}
}
我在我的应用程序中使用了非常相似的类实现,并且没有遇到任何类似的问题。我还没弄清楚为什么在这里设置 phoneNumber 属性会抛出这个异常。
【问题讨论】:
-
感谢大家的回答。虽然我换了电脑,但问题就消失了。我签入了我最新的代码,并在我的另一台机器上得到了最新的,Xcode 不再抛出这个异常。不过,我不太了解问题的原因,因为我尝试了几次干净的构建都无济于事......
标签: iphone objective-c core-data ios5 nsmanagedobject