2010-10-19 79 views
115

所以我有一個NSArray「myArray」與NSNumber s和NSString s。我需要他們在另一個UIView,所以我是這樣的:如何將NSNumber轉換爲NSString

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

DetailViewController *details = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:nil]; 
details.subjectText = [[myArray objectAtIndex:indexPath.row] objectForKey:@"subject"]; 

的subjectText工作。 但是我怎樣才能得到NSNumber? (我實際上需要他們作爲字符串...) 我會轉換NSStringNSNumber這樣: NSString *blah = [NSNumber intValue]。但我不知道如何把它架在上面的代碼...

+0

您的數組似乎實際上包含字典,通過使用'objectForKey'來判斷。因此,在嘗試轉換之前,您需要從中提取適當的值。請注意,大多數Cocoa對象類型(包括NSNumber)可以通過調用'description'方法(或在格式字符串中使用'%@')來轉換爲字符串。 – walkytalky 2010-10-19 16:04:52

+0

哇..謝謝你walkytalky!你能指點我一個文檔還是給一個示例代碼來理解它? =) – dav3 2010-10-19 16:26:21

+0

謝謝你,工作。 – dav3 2010-10-19 20:57:56

回答

341

嘗試:

NSString *myString = [NSNumber stringValue]; 
+0

謝謝,但是,我有一個數組,並且不響應stringValue .. – dav3 2010-10-19 15:41:47

+3

,但你應該採取數組內的NSNumber,然後調用StringValue方法,就像NSString * myString = [[myArray objectAtIndex:i]字符串值];但你必須確定你有一個NSNumber在該索引 – JonLOo 2010-10-19 15:47:13

+0

我更喜歡descriptionWithLocale:[NSLocale currentLocale],因爲它適用於整數和浮點數。 – 2015-04-11 17:22:03

5

,或者嘗試NSString *string = [NSString stringWithFormat:@"%d", [NSNumber intValue], nil];

+7

這有兩個轉換。一個將NSNumber轉換爲intValue,另一個將生成的intValue強制轉換爲NSString。對某些人來說,使用它可能會很小,但將其刪除是保存小型計算週期的好方法......可以加起來。 – Jann 2011-06-01 22:56:00

+0

這假定存儲的數字是整數。如果你不知道存儲號碼的類型怎麼辦? – 2014-03-04 13:10:19

7
//An example of implementation : 
// we set the score of one player to a value 
[Game getCurrent].scorePlayer1 = [NSNumber numberWithInteger:1]; 
// We copy the value in a NSNumber 
NSNumber *aNumber = [Game getCurrent].scorePlayer1; 
// Conversion of the NSNumber aNumber to a String with stringValue 
NSString *StringScorePlayer1 = [aNumber stringValue]; 
11

你可以做到這一點:

NSNumber *myNumber = @15; 
NSString *myNumberInString = [myNumber stringValue]; 
2

有趣的是,如果NSNumber成爲字符串的一部分,它會自動轉換爲字符串。我不認爲這是記錄。 嘗試這些:

NSLog(@"My integer NSNumber:%@",[NSNumber numberWithInt:184]); 
NSLog(@"My float NSNumber:%@",[NSNumber numberWithFloat:12.23f]); 
NSLog(@"My bool(YES) NSNumber:%@",[NSNumber numberWithBool:YES]); 
NSLog(@"My bool(NO) NSNumber:%@",[NSNumber numberWithBool:NO]); 

NSString *myStringWithNumbers = [NSString stringWithFormat:@"Int:%@, Float:%@ Bool:%@",[NSNumber numberWithInt:132],[NSNumber numberWithFloat:-4.823f],[NSNumber numberWithBool:YES]]; 
NSLog(@"%@",myStringWithNumbers); 

它會打印:

My integer NSNumber:184 
My float NSNumber:12.23 
My bool(YES) NSNumber:1 
My bool(NO) NSNumber:0 
Int:132, Float:-4.823 Bool:1 

工程同時支持Mac和iOS

在這一個不工作:

NSString *myNSNumber2 = [NSNumber numberWithFloat:-34512.23f]; 
+2

記錄如下:'%@'格式說明符將發送'-description'消息給相應的接收方對象。你可以用同樣的精神讓你的最後一行工作:'NSString * myNSNumber2 = [[NSNumber numberWithFloat:-34512.23f] description];'。據我所知,'NSNumber'的'description'和'stringValue'方法做同樣的事情。 – 2016-03-22 08:08:34

2

在斯威夫特,你可以做像這樣

let number : NSNumber = 95 
let str : String = number.stringValue 
2

在雨燕3.0

let number:NSNumber = 25 
let strValue = String(describing: number as NSNumber) 
print("As String => \(strValue)") 

我們可以得到的字符串的數值。

相關問題