2010-06-07 87 views
3
unichar myChar = [myString characterAtIndex:0]; 
[myNSMutableArray addObject:myChar]; 

我想將一個字符串的第一個字符插入數組,創建一個字符數組。第一行不會給我一個錯誤。但是,第二行提供了以下錯誤:warning: passing argument 1 of 'addObject:' makes pointer from integer without a castObjective-C:用字符串索引初始化字符char

這也使應用程序崩潰,出現「錯誤地址」錯誤。我認爲這個錯誤是由於內存分配問題。有人可以對此有所瞭解。

回答

4

一種選擇是將字符作爲字符串添加到您的數組:

unichar myChar = [myString characterAtIndex:0]; 
NSString * charString = [NSString stringWithFormat:@"%c", myChar]; 
[myNSMutableArray addObject:charString]; 

注意,這可能是矯枉過正。

+0

這給了我正是我要找的東西,謝謝。 – 2010-06-07 15:05:47

5

您只能將對象添加到數組中。 unichar是一種原始數據類型。您必須將其包裝在NSNumber中。一個unicharunsigned short,所以你可以使用:

[myNSMutableArray addObject:[NSNumber numberWithUnsignedShort:[myString characterAtIndex:0]]]; 
+0

我之前看到過這個函數,但是這是一個數字。我試圖用一個實際的角色來做同樣的事情。我找不到一個字符的等效函數,所以我寫了我發佈的原始代碼。對於角色是否有類似的功能,或者這通常不是在Objective-C中完成的嗎? (對不起,我是新手語言) – 2010-06-07 14:40:36

+0

字符*本質上是一個數字(實際上,「unichar」只是一個'unsigned short')。 – mipadi 2010-06-07 14:43:12

+0

然後沒有辦法得到索引0的字符串「字符串」,並得到字母S返回?我爲這種困惑道歉,也許它不是我需要的字符,也許是其他的東西? – 2010-06-07 14:46:07