以下是我正在尝试的代码..
但问题是当我第一次加载视图时它工作..没有任何问题..
但是当我尝试再次加载视图并调用此代码时...它会在arrMain addObject:
我试图查看它但却找不到任何东西..
有人可以帮忙吗?NSUserDefaults *ds = [NSUserDefaults standardUserDefaults];
NSMutableArray *arrMain = [ds objectForKey:@"files"];
int i;
if([arrMain count] > 0)
{
i = [arrMain count] + 1;
}
else
{
arrMain = [[NSMutableArray alloc] init];
i = 1;
}
NSLog(@"File Name To Be Saved %d.txt",i);
NSArray *sd = [[NSArray alloc] init];
sd = [dict componentsSeparatedByString:@"/"];
NSMutableDictionary *dict1 = [[NSMutableDictionary alloc] init];
[dict1 setObject:[sd objectAtIndex:[sd count] - 1] forKey:@"name"];
NSString *OrgFilename = [sd objectAtIndex:[sd count] - 1];
NSArray *extArr = [[NSArray alloc] init];
extArr = [OrgFilename componentsSeparatedByString:@"."];
NSString *flExt = [extArr objectAtIndex:1];
[dict1 setObject:[NSString stringWithFormat:@"%d.txt",i,flExt] forKey:@"filename"];
// *** error happens VVVV
[arrMain addObject:dict1];
// *** error happens ^^^^
[ds setObject:arrMain forKey:@"files"];
[ds synchronize];
答案 0 :(得分:1)
问题是您正在尝试从NSMutableArray
检索NSUserDefaults
。它不会返回NSMutableArray
,而是返回NSArray
。你会想要:
NSMutableArray *arrMain = [[[ds objectForKey:@"files"] mutableCopy] autorelease];
第一次“工作”的原因是arrMain
为零,因此您创建了有效的NSMutableArray
,然后将其保存到NSUserDefaults
。之后,你得到了一个有效的对象(非零),但它不是你期望的类型。由于-[NSUserDefaults objectForKey:]
会返回id
类型,因此很高兴为其分配了NSMutableArray
对象,即使它不是那种类型。