2014-02-28 178 views
0

我是iOS編程的初學者,我需要一些幫助從函數返回數組。 我有我的應用程序的這種結構(我不知道,如果它是正確的):從用戶分配給NSArray *的指針類型不兼容*

https://www.dropbox.com/s/md4b2nrdf09wdny/Screenshot%202014-02-28%2018.11.30.png

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]; 

但是當我啓動應用程序存在錯誤或警告 - Incomaptible指針類型分配給的NSArray *來自用戶*,我不知道爲什麼是真正的問題,因爲函數getAllUsers返回數組,我分配給數組。謝謝你的幫助。

+0

我們可以從UserController.h中看到getUsers的聲明嗎? –

+0

你的第二批代碼似乎是多餘的。最下面的三行可以合併成'NSArray * users = [userController getUsers];'。這可能會解決你的問題,但我不確定。 – hgwhittle

+0

不需要分配/ init用戶,然後將其設置爲[userController getUsers]的返回值。如果你使用的是弧,你可以這樣做:NSArray * users = [userController getUsers],但是如果你不使用弧,只需在[userController getUsers]的末尾引入一個保留。 – daveMac

回答

2

我沒有看到你發佈的代碼的任何User *,但我覺得對於編譯器警告唯一合乎邏輯的解釋是,在聲明作爲- (User *)getUsers而不是- (NSArray *)getUsers

+0

感謝這兩個。我很抱歉,錯誤實際上是在UserController.h中。我在那裏(用戶*)而不是(NSArray *)。謝謝! – krata

2

着色給你提示。

重命名上線變量Usersusers

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

這並不能解決他的問題。變量名稱的情況是不相關的。堆棧溢出將它作爲類名着色,因爲通常類名是大寫的。但它仍然是一個有效的變量名稱。 – NathanAldenSr

+0

@NathanAldenSr拋開色彩,這個答案可能是相關的。有可能是由導致該問題的用戶的名稱的類。 – daveMac

+0

即使有,也不會導致他遇到的錯誤。他的錯誤與指針強制有關。 – NathanAldenSr

相關問題