NSURLRequest错误:“[CoreData length]:无法识别的选择器发送到实例”

时间:2013-01-23 07:12:08

标签: ios xcode nsurlrequest nsfetchrequest

我在另一个视图中有一个我在QR码扫描仪中扫描的链接,然后保存到Core Data。我保存它的实体称为“BarCode”,其属性为“number”。您将在一分钟内看到的获取结果是来自QR Code扫描的正确URL。我只是得到一个错误,就像我在标题中列出的那样。字面意思是:-[BarCode length]: unrecognized selector sent to instance 0x210645e0

我正在执行此块,这也会引发错误:

NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"BarCode"];
NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"number" ascending:NO];
request.sortDescriptors = @[sortDescriptor];

NSError *error = nil;
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
NSString *currentURL = [[self.managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:indexPath.row];
if (error) {
    NSLog(@"error fetching data %@ %@", error, error.userInfo);
}

[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:currentURL]]];

我了解从NSArray转换为NSString的转换导致错误,因为它“无法识别”。但是我做了一些研究,发现错误中的“lenght”属性与NSURLRequest类中的某些内容有关,但我是全新的类,所以我不知道如何我需要重写这个块。

我尝试了一下,但我找不到涉及NSFetchRequestNSURLRequest的示例。

我真的希望有人能在这里有所了解。谢谢!

1 个答案:

答案 0 :(得分:1)

您的currentURL将包含NSManagedObject子类的实例,而不是NSString。您缺少几行代码:

MyManagedObject *myManagedObject = [[self.managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:indexPath.row];
// This is what you are missing:
NSString *currentURL = myManagedObject.someStringAttribute;
if (error) {
    NSLog(@"error fetching data %@ %@", error, error.userInfo);
}

[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:currentURL]]];

您收到错误-[BarCode length]: unrecognized selector sent to instance 0x210645e0,因为[NSURL URLWithString:currentURL]假定currentURL是一个字符串,NSURL尝试进行一些字符串验证。