为什么我无法替换目标c中NSXMLParser的foundCharacters方法中的NSMutableString值?

时间:2016-11-14 06:40:14

标签: ios objective-c nsxmlparser

我是iOS的新手,我遇到了在 NSXMLPerser foundCharacters方法中替换字符串值的问题。

我的代码就像这样

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{  
    myMutableStringassignedObj=[[NSMutableString alloc]initWithString:string];
    NSLog(@"Array String: %@",myMutableStringassignedObj);
    myMutableStringassignedObj = [[myMutableStringassignedObj stringByReplacingOccurrencesOfString:@"&"
                                         withString:@"and"] mutableCopy];//I am changing string like this but it not working
    NSData *data = [myMutableStringassignedObj dataUsingEncoding:NSUTF8StringEncoding];
    responseassigneddict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
    NSLog(@"JSON DATA = %@",responseassigneddict);
}

由于& ,它会给我null值。有没有办法改变它。在此先感谢!

4 个答案:

答案 0 :(得分:2)

用这个

替换你的字符串修改方法
[myMutableStringassignedObj replaceOccurrencesOfString:@"&" withString:@"and" options:NSLiteralSearch range:NSMakeRange(0, myMutableStringassignedObj.length)];

之后,将您的字符串放在NSArray或NSDictionary中。

NSArray *array = @[myMutableStringassignedObj];

这里的问题是:您没有从jsonData对象解码NSDatajsonData应始终以ArrayDictionary开头。在此,您已将NSString转换为NSData并尝试使用NSJSONSerialization对其进行解码。所以,由于这个原因,你得到一个错误。我检查了错误代码。

因此,要将NSData解码为jsonObject/Foundation Object,您应该将字符串放入NSArrayNSDictionary,然后将其转换为{{1}使用NSData

NSJSONSerialization

修改

正如评论中所述,请使用XMLParser库来解决此问题。

答案 1 :(得分:0)

你可以这样做,

  NSString *string = @"hello & hello";

 NSString *result = [string stringByReplacingOccurrencesOfString:@"&" withString:@"and"];

NSLog(@"result : %@",result);

没有将其转换为mutable string

答案 2 :(得分:0)

 NSMutableString *String = [[NSMutableString alloc]initWithString:@"B&c"];

    [String replaceOccurrencesOfString:@"&" withString:@"and" options:NSRegularExpressionSearch range:NSMakeRange(0, String.length)];
    NSLog(@"string after replacing %@",String);

输出:

string after replacing `Bandc`

答案 3 :(得分:0)

编码具有特殊字符的数据的问题。直接使用以下行代码而不是替换&或任何特殊字符。

NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLKMNOPQRSTUVWXYZ0123456789"];

NSString *encodedData = [myMutableStringassignedObj stringByAddingPercentEncodingWithAllowedCharacters:set]];

NSData *data = [encodedData dataUsingEncoding:NSUTF8StringEncoding];