在我的應用程序中,我將手動創建一個對象數組,以創建一個平等數組,其中的對象存儲在參考文件夾中。我用contentsOfDirectoryAtPath創建自動數組。手動VS自動數組澄清
問題是當我在集合視圖cellForItemAtIndexPath中稍後引用數組時。手動創建的數組運行正常,但自動數組的格式不相同並引發錯誤。
不同之處在於手動創建的數組有3個對象,自動創建的數組有一個對象,在日誌中由額外的括號顯示。我如何獲得自動創建的數組來添加每個文件夾對象,這樣我就可以像使用手動創建的數組一樣獲得一個包含3個對象的數組?在此先感謝您的時間。
手動創建targetArray
//@interface
@property (nonatomic, strong) NSArray *targetArray;
//viewdidLoad
self.targetArray = @[@"one",@"two", @"three"];
NSLog(@"Target Array description test = %@", [_targetArray description]);
//returns
Target Array description test = (
"one",
"two",
"three"
)
通過閱讀參考文件夾
//@interface
@property (nonatomic, strong) NSArray *targetArray;
//viewdidLoad
for (int i = 0; i <= [folderArray count] -1; i++) {
NSString *sectionString = [folderArray objectAtIndex:i];
NSMutableArray *subFolderArray = [[NSMutableArray alloc] init];
NSArray *targetArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:folderPath error:nil];
NSLog(@"Target Array description test = %@", [_targetArray description]);
}
//returns
Target Array description test = (
(
"one",
"two",
"three"
)
)
的cellForRowAtIndexPath爲W /錯誤日誌以供參考
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
sheetCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"SheetCell" forIndexPath:indexPath];
NSLog(@"Target Array description test = %@", [_targetArray description]);
NSString *sheetString = [self.targetArray objectAtIndex:indexPath.row];
ERROR: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM stringByDeletingPathExtension]: unrecognized selector sent to instance 0x78794450'
cell.sheetImageView.image = [UIImage imageNamed:sheetString];
cell.sheetLabel.text = sheetString;
return cell;
}
您似乎有兩個不同的對象,名爲targetArray:一個是self.targetArray(也可以通過其實例變量_targetArray訪問),另一個是在for循環中聲明的另一個對象(NSArray * targetArray)。您的NSLog只能引用前者。你的for循環也沒有關閉} - 是一個錯字? – pbasdf 2014-10-05 22:41:06