林與一個單工作陣列中刪除對象來存儲一些數據,她是實施從存儲在一個單
static ApplicationData *sharedData = nil;
@implementation ApplicationData
@synthesize list;
+ (id)sharedData
{
static dispatch_once_t dis;
dispatch_once(&dis, ^{
if (sharedData == nil) sharedData = [[self alloc] init];
});
return sharedData;
}
- (id)init
{
if (self = [super init])
{
list = [[NSMutableArray alloc]init];
}
return self;
}
如果列表具有小於3(2 <)對象i中的應用程序崩潰與「索引0越過空陣列的邊界「
// NSMutableArray *anArray = [[NSMutableArray alloc]initWithObjects:@"", nil];
while ([[[ApplicationData sharedData]list] lastObject] != nil)
{
File *file = [[[ApplicationData sharedData]list] lastObject];
BOOL isDir;
if (![[NSFileManager defaultManager] fileExistsAtPath:file.filePath isDirectory:&isDir])
{
NSMutableDictionary *tmpDic = [NSMutableDictionary dictionaryWithObjects:[NSArray arrayWithObjects:file.fileName,file.filePath,logEnteryErrorfileNotFoundDisplayName,[formatter stringFromDate:[NSDate date]], nil] forKeys:[NSArray arrayWithObjects:logShredFileName,logShredFilePath,logShredStatue,logShredDate, nil]];
[logArray addObject:tmpDic];
errorOccured = YES;
[[[ApplicationData sharedData]list] removeLastObject];
continue;
}
... other code
}
如果我使用完美工作的anArray。 有什麼問題?
我在測試應用程序中使用了你的代碼,添加了5個對象列表,然後運行while循環的修改版本(只是記錄,然後刪除最後一個對象),並且一切正常。你確定你的錯誤發生在這裏的代碼? – rdelmar