私は次の文字列を持っています。これを追加したいNSURL
のですが、追加した後、結果が必要ですNSURL
{ "deviceid":"3c27c99ac4b159aca81de8f5d266478f00000000","ニックネーム":"悲しい","性別":0,"結婚":0,"子供":1,"仕事":"asd","メッセージ":"Asd" ,"プッシュ":"3c27c99ac4b159aca81de8f5d266478f00000000"}
誰でも私を助けてください。前もって感謝します 。
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"];
あなたは最終的な 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 エスケープ コードに置き換えます。