Ios 解释Objective-C中的&error(NSError)构造(使用不重复使用的标识符'error')
我是iOS开发新手,我正在开发一款类似Instagram的应用程序,以便教我一些基础知识。我正在通过via工作,因为它很有用,但是在AppDelegate.m中,有一个函数,代码请求解析一些facebook数据,并返回一些数据。我的问题是以下几行代码:Ios 解释Objective-C中的&error(NSError)构造(使用不重复使用的标识符'error'),ios,objective-c,parse-platform,nserror,Ios,Objective C,Parse Platform,Nserror,我是iOS开发新手,我正在开发一款类似Instagram的应用程序,以便教我一些基础知识。我正在通过via工作,因为它很有用,但是在AppDelegate.m中,有一个函数,代码请求解析一些facebook数据,并返回一些数据。我的问题是以下几行代码: PFQuery *facebookFriendsQuery = [PFUser query]; [facebookFriendsQuery whereKey:kPA_UserFacebookIDKey containedIn:facebookId
PFQuery *facebookFriendsQuery = [PFUser query];
[facebookFriendsQuery whereKey:kPA_UserFacebookIDKey containedIn:facebookIds];
NSArray *facebookFriends = [facebookFriendsQuery findObjects:&error];
// This if statement gives me the following error:
// "use of undeclared identifier 'error'"
if (!error){ }
这种结构:
NSArray *facebookFriends = [facebookFriendsQuery findObjects:&error];
if (!error){ }
看起来很简单,但在代码中使用未声明的标识符“error”时会出现错误,但在AnyPic文件中不会出现警告
那么,有人能解释一下这个构造是什么&错误,以及为什么我会得到这个“未声明的标识符”错误吗
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
编辑2014年9月14日:因为这篇文章的标题是“解释Objective-C中的错误和错误N错误结构”,所以我想我会解释我学到的东西,以防将来对其他人有所帮助。现在我觉得很傻,我所缺少的只是错误变量声明和if!error{}正在评估error变量是nil还是non-nil,但这种混淆似乎是有道理的,因为在我非常熟悉的PHP语言中,可以从函数调用内部分配一个不存在的变量,并将其提升到调用它的函数的范围。例如:
// In PHP
preg_match_all("/myregex/", $someString, $matches);
if ($matches) {
// pregmatch has found some matches, and now there is a variable
// named $matches available to the same scope where preg_match_all was called
}
所以当我在Objective-C中看到一些相似但在语法上不完全相同的东西时:
// In Objective-C
NSArray *myArray = [self getObjects:&error];
if(!error) {
// This is a compiler error, because the error variable
// doesn't exist at this point, because Objective-C won't
// let you assign variables in this way
}
因此,解决方案是要记住,PHP和Objective-C非常不同,使用&operator通过引用将值传递给变量的正确语法如下所示:
希望这能帮助那些遇到和我一样困惑的人 由于未定义变量错误,因此出现此错误 从第459行开始,您将发现声明的错误变量。然后,如果第472行出现错误,则该错误将被更改。然后在第474行,条件检查该变量,以确定是否一切正常,然后继续
NSError *error = nil; //line 459
NSArray *anypicFriends = [query findObjects:&error]; //line 472
if (!error) { } // line 474
请在使用前声明bool错误(&error)line@HuyNghia-这不是一个傻瓜。错误应声明为NSError*。必须声明每个变量。这是你应该学习的第一件事。啊。@HotLicks对不起,我的错误。哦,你不再使用PHP了。啊哈!就这样。我错过了N错误*error=nil;教程中的声明。谢谢
NSError *error = nil; //line 459
NSArray *anypicFriends = [query findObjects:&error]; //line 472
if (!error) { } // line 474