1

この文字列「Rasberry & Banana Smoothies」を Web サービスから取得しています。文字列を 1 つの値ではなく 3 つの異なる値として取得しています。

ラズベリー

バナナのスムージー

&サーバーデータベースからシンボルを削除すると、完全な文字列がそのまま取得されます。

なぜそうなのか理由がわかりません。誰かが私を案内してくれますか?

前もって感謝します。

ここにそれを取得するコードを投稿しています。これは問題を理解するのに役立つかもしれません:

- (void)viewDidLoad
{
[super viewDidLoad];

arrayTitle = [[NSMutableArray alloc]init];
arrayImage = [[NSMutableArray alloc]init];
arrayRecipe = [[NSMutableArray alloc]init];

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"2-right-side-sheet-1.png"]];

NSString *url=[[NSString alloc]initWithFormat:@"http://smoktec.net/Monty/api/?"];

NSString *Action=@"action=";

NSString *compUrl=[[NSString alloc]initWithFormat:@"%@%@%@",url,Action,@"Recipes"];

NSURL *urlToPars= [NSURL URLWithString:compUrl];
NSLog(@"%@",compUrl);

[self parseWithUrl3:urlToPars];
}

-(void)parseWithUrl3:(NSURL *)compUrl
{
    parser=[[NSXMLParser alloc]initWithContentsOfURL:compUrl];
    [parser setDelegate:self];
    [parser parse];
    [parser release];
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    stcurrentelement=[NSString stringWithFormat:@"%@",elementName];
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{

    if(!(stcurrentelement==nil))
    {
        if([stcurrentelement isEqualToString:@"Recipetitle"])
        {
            [arrayTitle addObject:string];
            NSLog(@"%@",string);
        }

        else if([stcurrentelement isEqualToString:@"RecipeImg"])
        {
            [arrayImage addObject:string];
            NSLog(@"%@",string);
        }

        else if([stcurrentelement isEqualToString:@"Recipeid"])
        {
            [arrayRecipe addObject:string];
            NSLog(@"%@",string);
        }
    }
}
4

3 に答える 3

1

これを試して:

NSString *compUrl=[[NSString alloc]initWithFormat:@"%@%@%@",url,Action,@"Recipes"];
NSString *URLEncodedText = [compURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

リクエストを行う前に、URL 文字列をエンコードする必要があります。

于 2012-12-26T08:41:26.037 に答える
0

最後に、サーバーからデータを受信した後に文字列を連結します。

NSString *str = [arrayTitle objectAtIndex:3];
NSString *str1 = [arrayTitle objectAtIndex:4];
NSString *str2 = [arrayTitle objectAtIndex:5];

NSString *strring = [str stringByAppendingString:str1];
 NSString *strring1 = [strring stringByAppendingString:str2];

NSLog(@"strr:%@",strring1);
于 2012-12-26T10:39:22.447 に答える
0

Web サービスの結果/応答をエンコードして、再試行する必要があります。

于 2012-12-26T08:32:47.407 に答える