0

我对 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 计数]:无法识别的选择器发送到实例 0x210b6e20

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

任何帮助将不胜感激。

谢谢。

4

2 回答 2

0

您不是在处理数组,而是在处理字符串。Objective-C 有点偏离常规,因为对象是无类型的,但指针是有类型的。仅仅将一个对象分配给一个指针并不会改变它的类型或关于它的任何其他内容(保留计数除外)。

在我看来,您希望您的字符串具有什么语法以及为什么您希望内置解析,所以我真的不能说更多。

于 2013-02-16T04:10:52.450 回答
0

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

于 2013-02-16T04:11:35.993 回答