2011-10-01 24 views
1

我的程序工作正常,但我得到編譯時,這樣的警告:警告試圖從一個陣列得到一個字符串,iOS的

格式不是字符串文字,沒有格式參數

RomanosBasicos是字符串數組:

RomanosBasicos=[[NSArray alloc] initWithObjects:@"M",@"CM",@"D",@"CD",@"C",@"XC",@"L",@"XL",@"X",@"IX",@"V",@"IV",@"I" , nil]; 

和我在這行警告:

temp = [temp stringByAppendingFormat:[RomanosBasicos objectAtIndex:i]]; 

感謝您的幫助!

+0

NSArray給NSObject,而不是NSString。投它。 –

回答

2

代替

temp = [temp stringByAppendingFormat:[RomanosBasicos objectAtIndex:i]]; 

使用

temp = [temp stringByAppendingString:[RomanosBasicos objectAtIndex:i]]; 

但是,如果你想使用stringByAooendingFormat:,那麼你必須要做到這一點

temp = [temp stringByAppendingFormat:@"%@", [RomanosBasicos objectAtIndex:i]]; 

我覺得你現在是什麼警示手段。

+2

要添加到此,警告的原因是,將格式字符串作爲變量饋入是非常危險的,並且如果以某種方式可以在此輸入任意格式的字符串,則會打開潛在的安全漏洞。這是我在處理Objective-C時總是將我的編譯器設置中的警告視爲錯誤的衆多原因之一。 –

0

你的意思是[temp stringByAppendingString:[RomanosBasicos objectAtIndex:i]];代替?

0

stringByAppendingFormat:預計有參數Formatted NSString。從你的程序看來,你真的想要stringByAppendingString:這樣的:

temp = [temp stringByAppendingString:[RomanosBasicos objectAtIndex:i]]; 
相關問題