[英]NSArray item to NSString
在一種方法中,我有以下代碼:
NSString* tempString = (NSString*)arg;
NSArray* notificationDetails = [tempString componentsSeparatedByString:@"##"];
NSString* tempString1 = [notificationDetails objectAtIndex:2];
.
.
.
.
.
.
NSLog(tempString1);
當我編譯代碼時,它的編譯沒有任何錯誤和警告。 但是在運行時(在帶有斷點的調試模式下),它在NSLog語句中崩潰。 我看到的麻煩是在獲取“ [notificationDetails objectAtIndex:2];”時 有什么解決方案。
使用...
NSLog(tempString1);
...很危險。 盡管看起來NSLog可以接受任何字符串作為其唯一參數,但實際上,所調用的實際函數的定義清楚地表明,第一個參數在內部被解析為格式字符串。
void NSLogv (
NSString *format,
va_list args
);
這意味着字符串中任何格式含義為“%”的字符都將被視為格式,而不是字符。 因此,如果您嘗試傳遞字符串,則“減價40%” NSLog將查找參數,如果找不到則崩潰。
采用
NSLog(@"%@", tempString1);
notificationDetails包含多少個元素? 使用以下代碼找出:NSLog(@“%d elements”,[notificationDetails count]);
arg根本不是字符串嗎? NSLog(@“ arg的類為%@”,[arg類]);
取決於省略號的長度的另一種可能性:componentsSeparatedByString:返回一個自動釋放的數組。 但是我猜想組件不足。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.