Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从用户分配给NSArray*的指针类型不兼容*_Ios_Objective C_Arrays_Return Value - Fatal编程技术网

Ios 从用户分配给NSArray*的指针类型不兼容*

Ios 从用户分配给NSArray*的指针类型不兼容*,ios,objective-c,arrays,return-value,Ios,Objective C,Arrays,Return Value,我是iOS编程的初学者,我需要一些从函数返回数组的帮助。 我有我的应用程序的这种结构(我不知道它是否正确): User.h/.m是从CoreData模型生成的文件,具有4个属性 LoginVC.h/.m用于登录应用程序(授权) UserController用于处理用户结构-保存用户、更新用户、获取所有用户等 我需要的是…我在UserController.m中有一个函数,该函数如下所示: -(NSArray *)getUsers{ CoreDataHelper *cdh = [(App

我是iOS编程的初学者,我需要一些从函数返回数组的帮助。 我有我的应用程序的这种结构(我不知道它是否正确):

User.h/.m是从CoreData模型生成的文件,具有4个属性

LoginVC.h/.m用于登录应用程序(授权)

UserController用于处理用户结构-保存用户、更新用户、获取所有用户等

我需要的是…我在UserController.m中有一个函数,该函数如下所示:

-(NSArray *)getUsers{

    CoreDataHelper *cdh = [(AppDelegate *)[[UIApplication sharedApplication]delegate] cdh];

    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"User"];

    NSArray *Users = [cdh.context executeFetchRequest:request error:nil];

    return Users;

}
该函数用于从表User中获取所有用户,并返回用户数组

我想在LoginVC.m中调用此函数,因此我将此代码推送到函数viewDidLoad:

UserController *userController = [[UserController alloc]init];

[userController getUsers];
NSArray *users = [[NSArray alloc]init];

users = [userController getUsers];

但当我启动应用程序时,出现了一个错误或警告-不可映射的指针类型从用户*分配给NSArray*并且我不知道为什么会出现真正的问题,因为函数getAllUsers返回数组,我分配给数组。谢谢你的帮助。

着色给你一个提示

在线将变量
Users
重命名为
Users

NSArray *Users = [cdh.context executeFetchRequest:request error:nil];

色彩是给你一个提示

在线将变量
Users
重命名为
Users

NSArray *Users = [cdh.context executeFetchRequest:request error:nil];


我在您发布的代码中没有看到任何
User*
,但我认为编译器警告的唯一逻辑解释是
getUsers
UserController.h
中声明为
-(User*)getUsers
,而不是
-(NSArray*)getUsers

我在您发布的代码中没有看到任何
User*
,但我认为编译器警告的唯一逻辑解释是
getUsers
UserController.h
中声明为
-(User*)getUsers
,而不是
-(NSArray*)getUsers

我们可以从UserController.h中看到getUsers的声明吗?您的第二批代码似乎是多余的。最后三行可以合并为
NSArray*users=[userController getUsers]。这可能会解决您的问题,但我不确定。无需alloc/init users,然后将其设置为[userController getUsers]的返回值。如果您使用的是arc,您可以这样做:NSArray*users=[userController getUsers],但如果您不使用arc,只需在[userController getUsers]的末尾抛出一个retain。我应该注意,这不会解决问题……请参阅下面的答案以了解解决方法。但是如果你按照我上面的建议写的话,它会写对的。请问“弧”到底是什么?分配是自动执行的,当我分配返回值时?我们可以从UserController.h中看到getUsers的声明吗?您的第二批代码似乎是多余的。最后三行可以合并为
NSArray*users=[userController getUsers]。这可能会解决您的问题,但我不确定。无需alloc/init users,然后将其设置为[userController getUsers]的返回值。如果您使用的是arc,您可以这样做:NSArray*users=[userController getUsers],但如果您不使用arc,只需在[userController getUsers]的末尾抛出一个retain。我应该注意,这不会解决问题……请参阅下面的答案以了解解决方法。但是如果你按照我上面的建议写的话,它会写对的。请问“弧”到底是什么?当我分配返回值时,分配是自动执行的?这并不能解决他的问题。变量名的大小写是不相关的。堆栈溢出将其着色为类名,因为通常类名是大写的。它仍然是一个有效的变量名,但抛开颜色不谈,这个答案可能是相关的。可能有一个名为User的类导致了此问题。即使存在,也不会导致他遇到的错误。他的错误与指针强制有关。这并不能解决他的问题。变量名的大小写是不相关的。堆栈溢出将其着色为类名,因为通常类名是大写的。它仍然是一个有效的变量名,但抛开颜色不谈,这个答案可能是相关的。可能有一个名为User的类导致了此问题。即使存在,也不会导致他遇到的错误。他的错误与指针强制有关。多亏了这两者。很抱歉,错误确实发生在UserController.h中。我有(User*)而不是(NSArray*)。谢谢多亏了这两个。很抱歉,错误确实发生在UserController.h中。我有(User*)而不是(NSArray*)。谢谢