2013-02-08 33 views
0

我買了一個INT對象的NSMutableArray值 ,我可以通過獲得一定值:討論id的stringValue函數的功能?

int *v0=[[[arrayObj objectAtIndex:0] intValue]; 

是沒有問題的。

但 我得到的NSString一個NSMutableArray的對象值 ,我無法通過獲得一定值:

NSString *v0=[[[arrayObj objectAtIndex:0] stringValue]; 
//raises error 

我想學習和了解到底是什麼stringValue的對...,爲什麼這個錯誤發生?

NSString * v0 = [arrayObj objectAtIndex:0]; 按預期工作。我在asusme中使用了一些null終止的指針,所以它可以挖掘價值。 林不知道這行也是unicode /編碼的字符串安全代碼。

的結論是:
想知道stringValue的的一些行O編碼目的網頁摘要

+0

'NSString * v0 = [... intValue]'不是問題? – trojanfoe 2013-02-08 16:30:00

+0

錯字。問題已糾正。它是int * v0 – 2013-02-08 16:32:28

+0

再次錯誤輸入;它是'int'而不是'int *'。 – trojanfoe 2013-02-08 16:36:04

回答

1

我買了一個INT對象的NSMutableArray值

這是不可能的,可可的數組總是包含對象。你可能有NSNumber對象的數組包裹整數,如:

NSArray *arrayOfNumbers = @[@1, @2, @3]; 

NSNumber對象有一個intValue方法,所以此工程:

int value = [arrayOfNumbers[0] intValue]; 

在另一方面,當你有一個數組字符串...

NSArray *arrayOfStrings = @[@"1", @"2", @"3"]; 

...要直接訪問單個元素,而字符串對象轉換成別的東西:

NSString *element = arrayOfStrings[0]; 

NSString對象不瞭解stringValue方法:

[arrayOfStrings[0] stringValue]; // crash: does not recognize selector 

回到一開始,我們從NSNumber對象第一陣列的確瞭解stringValue。你可以用它來將數字轉換爲字符串:

NSString *intString = [arrayOfNumbers[0] stringValue]; 

爲了使混亂完美,NSString瞭解intValue消息:

int value = [arrayOfStrings[0] intValue]; 

這裏intValue手段,試圖將字符串轉換以普通的C int值。

1

你會得到(但未能張貼你的問題),該錯誤會未知選擇發送到實例這是因爲NSString沒有stringValue方法。

你建議的做法是正確的:

NSString *v0 = [arrayObj objectAtIndex:0]; 

編輯(由@ An​​swerbot的回答提示):

你感到困惑的原因是,[NSString intValue]用於將字符串值轉換爲整數,只要字符串表示一個整數(即@"123")。但是,由於對象已經是字符串,因此您不需要此字符串。因此沒有提供。

+0

所以我的意思是這樣的: 什麼是stringValue? 我不在尋找解決方案,但瞭解stringValue功能 – 2013-02-08 16:33:44

+1

@ N.Ramos在某些UI控件中使用'stringValue'從控件中提取字符串或在控件中設置字符串。 – trojanfoe 2013-02-08 16:36:41