0

我有一个链接,我正在另一个视图的 QR 码扫描仪中扫描该链接,然后将其保存到 Core Data。我保存它的实体称为“条形码”,属性为“数字”。您将在一分钟内看到的获取结果是来自 QR 码扫描的正确 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”属性与NSURLRequests 类中的某些东西有关,但我对这个类是全新的,所以我不知道我需要如何重写这个堵塞。

我试着搜索了一下,但我找不到涉及 aNSFetchRequest和 a的示例NSURLRequest

我真的希望有人会对这里有所了解。谢谢!

4

1 回答 1

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尝试进行一些字符串验证。

于 2013-01-23T07:25:30.750 回答