1

這裏是我想要的代碼..的NSMutableArray ADDOBJECT:給錯誤

但事情是,當我加載視圖第一次它的工作原理..不給任何問題..

但當我嘗試再次裝入視圖,調用此代碼..它提供了有關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]; 
+1

1)你得到什麼錯誤? 2)你使用ARC? – 2011-12-16 19:41:27

+0

你好..不,我不使用弧..問題是它不打印任何錯誤。只是說節目收到信號SIGBART – Darshan 2011-12-16 19:45:42

回答

1

問題是你正試圖找回從NSUserDefaults一個NSMutableArray。它不會返回NSMutableArray,而是返回NSArray。你會想做的事:

NSMutableArray *arrMain = [[[ds objectForKey:@"files"] mutableCopy] autorelease]; 

它通過「合作」第一次的原因是arrMain是零,所以您創建了一個有效的NSMutableArray,然後保存它到NSUserDefaults。之後,你得到一個有效的對象(非零),但它不是你期望的類型。由於-[NSUserDefaults objectForKey:]返回id類型,因此它很樂意將它指定給您的NSMutableArray對象,即使它不是那種類型。

相關問題