簡體   English   中英

NSArray項轉換為NSString

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM