我使用的是NSDictionary
從與下面的代碼的plist得到了NSString
iPhone應用:的NSString問題的
NSString *fullPath = [[NSBundle mainBundle] pathForResource:@"TestIds" ofType:@"plist"];
NSDictionary *dictionary = [[NSDictionary dictionaryWithContentsOfFile:fullPath] retain];
NSString *testid = [dictionary objectForKey:@"testId"];
,然後我把它保存在一個NSMutableArray
與我創建了一個類的對象:
// before the code above
NSMutableArray *array = [[NSMutableArray array] retain]; // this is actually a global variable
// after the code
IdDescription *idDesc = [[IdDescription alloc] initWithId:testid];
[array addObject:idDesc];
應用做一些東西,其他的事情,然後調用它調用NSString
的方法:
IdDescription *desc = [array objectAtIndex:n];
NSLog(@"%@", desc.testId); // testId is a property with retain
問題是應用程序崩潰或被中斷以及所有類型的事情,當它到達NSLog
行。最難得的是,它的工作原理,如果我改變行:
NSString *testid = [dictionary objectForKey:@"testId"];
爲:
NSString *testid = @"testId_1"; // or any other string
我測試加:
if ([testid compare:@"testId_1"] == NSOrderedSame)
testid = @"testId_1";
後
NSString *testid = [dictionary objectForKey:@"testId"]
它仍然有效。
我也使用
NSString *testid = [NSString stringWithFormat:@"testId_%d", 1]
,而不是麻煩的線嘗試,但它與同EXC_BAD_ACCESS
錯誤崩潰。
任何人都知道可能是什麼問題?我嘗試了幾乎所有的東西。任何幫助最受讚賞。
供參考:如果您縮進代碼四個空格,它將顯示在等寬字體和語法突出顯示,所以它更容易閱讀:) – 2010-09-30 05:52:17
請格式化您的代碼,使其更具可讀性。有關指導,請參閱[Markdown編輯幫助](http://stackoverflow.com/editing-help)。 – 2010-09-30 05:53:49
如果您在NSString * testid = [dictionary objectForKey:@「testId」]後執行NSLog(@「%@」,testid),它會崩潰嗎?線?調試器和控制檯在崩潰後顯示什麼? – Altealice 2010-09-30 06:21:58