如何将NSString转换为NSArray?

时间:2015-02-16 00:23:09

标签: ios objective-c nsstring nsarray

我有NSString,当我NSLog时,它看起来像这样:

(
    Music,
    Music,
    "Ao Dai Fashion Show"
)

我想将其转换为NSArray,其中array [0] = Music,array [1] = Music,array [2] = Ao Dai Fashion Show。

我试图先使用以下方法删除()

NSString *jsonString = [str stringByReplacingOccurrencesOfString:@"()" withString:@""];

但是,我收到了unrecognized selector sent to instance

我怎样才能做到这一点?

由于

这是原始数组:

NSArray *oriArray = [dictionary objectForKey:someKey];

NSLog

(
        {
        "end_time" = "21:00";
        "english_event" = Music;
        "english_performer" = "DJ Happee From Channel 93.3";
        "start_time" = "20:00";
    },
        {
        "end_time" = "21:00";
        "english_event" = Music;
        "english_performer" = "Adam Cease";
        "start_time" = "20:00";
    },
        {
        "end_time" = "21:00";
        "english_event" = "Ao Dai Fashion Show";
        "english_performer" = "";
        "start_time" = "20:00";
    }
)

以下是获取包含内容NSArray的新Music, Music, "Ao Dai Fashion"的代码:

NSArray *newArry = [oriArray valueForKey:@"english_event"];

但是,当我尝试访问其索引时,newArry给出了一个错误。

5 个答案:

答案 0 :(得分:1)

我认为你记录的内容实际上并不是NSString。请检查其类型,因为它似乎已经是NSArray的实例。因此,你应该已经能够做你想做的事了。

答案 1 :(得分:1)

- (无效)解析:(的NSDictionary *)字典{

NSArray *oriArray = [dictionary objectForKey:someKey];
NSMutableArray *arrray=[[NSMutableArray alloc] init];
for (NSDictionary *dic in oriArray)
{
    [arrray addObject:[dic objectForKey:@"english_event"]];

}

}

使用它可能对你有帮助....

答案 2 :(得分:1)

对不起,我没有评论的声誉,我只是想问这个,你试过 -     NSArray * myArray = [stringOi componentsSeparatedByString:@“,”]; (*其中stringOi是你的str) 我尝试使用以下示例,这样可行,请尝试一下。

NSString * stringOi = [NSString stringWithFormat:@“(     音乐,     音乐,     “奥黛时装秀” )“];     的NSLog(@ “%@”,stringOi);

NSString *jsonString = [stringOi stringByReplacingOccurrencesOfString:@")" withString:@""];

NSString *jsonStringFinal = [jsonString stringByReplacingOccurrencesOfString:@"(" withString:@""];

NSLog(@"%@", jsonStringFinal);

NSArray *myArray = [jsonStringFinal componentsSeparatedByString:@","];
NSArray *myArray1 = [myArray objectAtIndex:0];
NSLog(@"%@",myArray1);
NSArray *myArray2 = [myArray objectAtIndex:1];
NSLog(@"%@",myArray2);
NSArray *myArray3 = [myArray objectAtIndex:2];
NSLog(@"%@",myArray3);

或者代替oriArray,您可以在字典dict中获取值,然后

NSArray * myArray1 = [dict objectForKey:@“english_event”];  NSString * Music = [myArray1 objectAtIndex:0];

希望最好......!

答案 3 :(得分:0)

两件事:

  1. NSArray *myArray = [myDictionary objectForKey:@"Valid Key"]并不意味着myArray实际上是一个数组。它只是意味着它是一个指向您已投射为NSArray的对象的指针。

  2. 您可以使用NSArray将任何NSDictionary[myDictionaryOrArray description]转换为字符串。

  3. 如果您不关心采取额外步骤并且知道当您注销阵列时,您会得到您想要/期望的内容,那么您肯定可以将您的字符串放入数组中。例如:

    NSString *myString = [@[Music, Music, "Ao Dai Fashion Show"] description];
    NSMutableArray *stringAsArray =  [NSMutableArray arrayWithArray:[myString componentsSeparatedByString:@","]];
    // this loop removes the white space before and after each word in the array
    for (int i = 0; i < stringAsArray.count; i++) {
        stringAsArray[i] = [stringAsArray[i] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    }
    

    如果您需要更长时间的样本代码,我将很乐意更新我的答案。

答案 4 :(得分:0)

(
    Music,
    Music,
    "Ao Dai Fashion Show"
)

这是一个不是字符串的数组

这个数组在每个索引中都有三个字符串,音乐,音乐,奥黛时装秀