Ios 解释Objective-C中的&error(NSError)构造(使用不重复使用的标识符'error')

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

我是iOS开发新手,我正在开发一款类似Instagram的应用程序,以便教我一些基础知识。我正在通过via工作,因为它很有用,但是在AppDelegate.m中,有一个函数,代码请求解析一些facebook数据,并返回一些数据。我的问题是以下几行代码:

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