2014-06-20 72 views
0

NSMutableArray創建時具有64個容量。一個NSString對象被添加。但是,該對象的字符串值爲零。NSMutableArray無法添加靜態NSString,拋出異常

static NSString* cake = @"cake"; 
... 
NSMutableArray* food = [NSMutableArray arrayWithCapacity:64]; 
[food addObject:[NSString stringWithString:cake]]; 
NSString* dessert = [[food objectAtIndex:0]stringValue]; 
// dessert is nil 

如果[NSString stringWithString: cake]被替換爲剛剛cake,它拋出異常

下面是一個整個程序,它是代碼小於10行並不起作用

#import <Foundation/Foundation.h> 
static NSString* cake = @"cake"; 
int main(int argc, const char * argv[]){ 
    @autoreleasepool { 
     NSMutableArray* food = [NSMutableArray arrayWithCapacity:64]; 
     [food addObject:cake]; 
     NSString* dessert = [[food objectAtIndex:0]stringValue]; 
    } 
} 

,則拋出例外。

+1

>> [[food objectAtIndex:0] stringValue]; –

+1

可變數組是否爲零?您發佈的代碼版本正常工作。 – CrimsonChris

+1

這裏不要使用stringWithString。這是沒有必要的。 – CrimsonChris

回答

1

問題可能是您的數組爲零。此代碼有效。

NSMutableArray *foodArray = [NSMutableArray array]; 
[foodArray addObject:@"cake"]; 
NSString *dessert = foodArray[0]; //dessert is "cake" 

更新

無法識別的選擇異常你得到的是一個NSString調用stringValue的結果。正如@Chuck指出的那樣,NSString沒有這個方法。