将NSString转换为NSArray

时间:2013-02-16 04:04:26

标签: objective-c casting nsstring nsarray nsobject

我是Objective-C的新手,我在处理NSArray方面遇到了问题。

我有一个看起来像这样的课程

@interface Tuple : NSObject
{
    NSObject* dataKey;
    NSObject* dataValue;
    NSString* dataType;
}
@property(nonatomic, retain) NSObject* dataKey;
@property(nonatomic, retain) NSObject* dataValue;
@property(nonatomic, retain) NSString* dataType;

- (id) initWithKey:(NSObject*)dKey 
          type:(NSString*)dType 
         value:(NSObject*)dValue;
- (NSString*) description;

- (NSString*)   getValueInString; 
- (BOOL)        getValueInBoolean; 
- (NSString*)   getAnswerValueInString; 
- (NSArray*)    getAnswerValueInArray;
@end

这是我的getAnswerValueInArray方法

- (NSArray*) getAnswerValueInArray
{
    NSLog(@"%@",dataValue);
    NSArray* value = (NSArray*)dataValue;
    if ([dataType isEqualToString:@"vague"] == NO) {
        return value;  
    }
 return nil;
}

返回值如下所示      ('KEY:0 \ tTYPE:string \ tVALUE = p1 \ n','KEY:2 \ tTYPE:string \ tVALUE = p4 \ n')

但是当我尝试循环数组时,就像

for (int a=0; a<value.count; a++) 

我收到以下错误。另外,我尝试了[value objectAtIndes:0]并给了我相同的(字符串)错误。我的猜测是,不知何故,我的数组实际上不是一个数组而是一个字符串,因此当我使用数组方法时它会抛出错误。但我不明白为什么以及如何解决这个问题以获得一个真正的数组。

2013-02-16 14:46:52.222 [3334:907] - [__ NSCFString count]:无法识别的选择器发送到实例0x210b6e20

- [__ NSCFString objectAtIndex:]:无法识别的选择器发送到实例0x1c5e7a70

非常感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:0)

你没有处理数组,你正在处理一个字符串。 Objective-C有点偏离常规,因为对象是无类型的,但指针是键入的。仅仅将一个对象分配给一个指针不会改变它的类型或其它任何东西(保留计数)。

在我看来,特别清楚你期望你的字符串有什么语法,以及为什么你希望解析内置,所以我真的不能说更多。

答案 1 :(得分:0)

在尝试访问其中的组件之前,您需要解析字符串以创建数组。一种入门方法是使用NSString方法componentsSeparatedByString:componentsSeparatedByCharactersInSet:。这些方法通过将它分割为指定的字符串或字符来返回从接收器生成的字符串数组。