我在另一个视图中有一个我在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
类中的某些内容有关,但我是全新的类,所以我不知道如何我需要重写这个块。
我尝试了一下,但我找不到涉及NSFetchRequest
和NSURLRequest
的示例。
我真的希望有人能在这里有所了解。谢谢!
答案 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
尝试进行一些字符串验证。