0

私は次の文字列を持っています。これを追加したいNSURLのですが、追加した後、結果が必要ですNSURL

{ "deviceid":"3c27c99ac4b159aca81de8f5d266478f00000000","ニックネーム":"悲しい","性別":0,"結婚":0,"子供":1,"仕事":"asd","メッセージ":"Asd" ,"プッシュ":"3c27c99ac4b159aca81de8f5d266478f00000000"}

誰でも私を助けてください。前もって感謝します 。

4

2 に答える 2

0
NSString *str=@"";

NSString *str1=@"\"deviceid\":\"3c27c99ac4b159aca81de8f5d266478f00000000 \",\"nickname\":\"sad\",\"gender\":0,\"marital\":0,\"children\":1,\"job:\"asd\",\"message\":\"Asd\",\"pushid\":\"3c27c99ac4b159aca81de8f5d266478f00000000\""; 

NSURL *url=[NSURL URLWithString:@"give your url"];

NSArray *components = [url pathComponents]; 

for (NSString *c in components)    
{
    str=[str stringByAppendingString:c];  
}   
str=[str stringByAppendingString:str1];

NSURL *newurl=[NSURL URLWithString:@"str"];    
于 2013-01-29T09:15:54.800 に答える
0

あなたは最終的な URL がどのように見えるかを述べていないので、レコード文字列の名前と値をクエリ文字列として元の URL に追加することを想定しています。

次のメソッドは、上記のようなベース URL と文字列を指定すると、結合された URL を返します。

-(NSURL *)URLWithRecord:(NSString *)record relativeToURL:(NSURL *)originalURL
{
    NSCharacterSet * unwantedDelimeters = [NSCharacterSet characterSetWithCharactersInString:@"{}"];
    NSCharacterSet * fieldSeperator = [NSCharacterSet characterSetWithCharactersInString:@","];
    NSCharacterSet * nameValueSeperator = [NSCharacterSet characterSetWithCharactersInString:@":"];
    NSCharacterSet * quotes = [NSCharacterSet characterSetWithCharactersInString:@"\""];


    record = [record stringByTrimmingCharactersInSet:unwantedDelimeters];
    NSArray * fields = [record componentsSeparatedByCharactersInSet:fieldSeperator];

    NSMutableString * queryString = [NSMutableString stringWithString:@"?"];

    for (NSUInteger fieldCount = 0; fieldCount < [fields count]; fieldCount++) {

        NSString * field = [fields objectAtIndex:fieldCount];

        NSArray * nameValue = [field componentsSeparatedByCharactersInSet:nameValueSeperator];
        NSString * name = [[nameValue objectAtIndex:0] stringByTrimmingCharactersInSet:quotes];
        NSString * value = [[nameValue objectAtIndex:1] stringByTrimmingCharactersInSet:quotes];

        if (fieldCount == ([fields count]-1) ) {
            [queryString appendFormat:@"%@=%@", name, value];
        } else {
            [queryString appendFormat:@"%@=%@&", name, value];
        }
    }

    NSURL * combinedURL = [NSURL URLWithString:queryString relativeToURL:originalURL];
    return combinedURL;
}

次のコードでテストした場合:

NSURL * originalURL = [NSURL URLWithString:@"http://www.example.com"];
NSString * string = @"{\"deviceid\":\"3c27c99ac4b159aca81de8f5d266478f00000000\",\"nickname\":\"sad\",\"gender\":0,\"marital\":0,\"children\":1,\"job\":\"asd\",\"message\":\"Asd\",\"pushid\":\"3c27c99ac4b159aca81de8f5d266478f00000000\"}";

NSURL * combinedURL = [self URLWithRecord:string relativeToURL:originalURL];
NSLog(@"result=\"%@\"", [combinedURL absoluteString]);

出力は次のとおりです。

result="http://www.example.com?deviceid=3c27c99ac4b159aca81de8f5d266478f00000000&nickname=sad&gender=0&marital=0&children=1&job=asd&message=Asd&pushid=3c27c99ac4b159aca81de8f5d266478f00000000"

提供されるメソッドは、レコード文字列に誤ったスペースがなく、レコード内の名前と値に ASCII の数字と文字のみが含まれていることを前提としています。URL の問題文字 (スペースなど) を含む名前または値がレコードに含まれている場合は、nil 値が返されます。そのような文字が関係していると思われる場合は、それに応じてメソッドを書き直す必要があります。そのような文字を URL エスケープ コードに置き換えます

于 2013-01-29T12:29:57.933 に答える