我试图回忆一下我在目录中保存的图像,以便在UICollectionView中显示它。这是执行此操作的代码。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
NSMutableArray *allImagesArray = [[NSMutableArray alloc] init];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *location=@"Hats";
NSString *fPath = [documentsDirectory stringByAppendingPathComponent:location];
NSArray *directoryContent = [[NSFileManager defaultManager] directoryContentsAtPath: fPath];
for(NSString *str in directoryContent){
NSString *finalFilePath = [fPath stringByAppendingPathComponent:str];
NSData *data = [NSData dataWithContentsOfFile:finalFilePath];
if(data)
{
UIImage *image = [UIImage imageWithData:data];
[allImagesArray addObject:image];
}}}
但是我收到的警告显示在最后一行,告诉我allImagesArray的本地声明隐藏了实例变量。我不知道为什么会这样。如果您想查看我的其他代码,请随时提问。非常感谢任何帮助 这是我的.h文件
@interface HatsViewController : UICollectionViewController <UICollectionViewDataSource, UICollectionViewDelegate>
{
NSMutableArray *allImagesArray;
}
答案 0 :(得分:0)
你可能在你的界面文件中声明它 - allImagesArray已经被你的UIViewController“知道”了。
Xcode所说的警告是这样说的:“嘿,你已经宣布了它,而你的viewDidLoad
你又在做了!小心” < / p>
要修复它,只需以这种方式启动数组:
而不是NSMutableArray *allImagesArray = [[NSMutableArray alloc] init];
将其替换为allImagesArray = [[NSMutableArray alloc] init];
BINGO更新:事实上,正如您刚刚提到的那样,您已经在界面文件中声明了它,因此您无需在viewDidLoad