-1

このメソッドを文字列のエンコードに使用します。

 - (NSString *) URLEncodedString_ch {
   NSMutableString * output = [NSMutableString string];
   const unsigned char * source = (const unsigned char *)[self UTF8String];
  int sourceLen = strlen((const char *)source);
  for (int i = 0; i < sourceLen; ++i) {
      const unsigned char thisChar = source[i];
     if (thisChar == ' '){
         [output appendString:@"+"];
      } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' || 
               (thisChar >= 'a' && thisChar <= 'z') ||
               (thisChar >= 'A' && thisChar <= 'Z') ||
               (thisChar >= '0' && thisChar <= '9')) {
        [output appendFormat:@"%c", thisChar];
      } else {
         [output appendFormat:@"%%%02X", thisChar];
     }
  }
  return output;
}

しかし、
「インスタンスメソッド ' -UTF8String' が見つかりません (戻り型のデフォルトは 'id')」というエラーが見つかりました。

これを「#include Foundation/NSString.h」のようにインポートします。このメソッドは NSString であるためです。しかし、このエラーは解決されません。私を助けてください。

4

3 に答える 3

2

次のコードで NSString カテゴリを作成します

あなたのNSString+URLEncode.hで

#import <Foundation/Foundation.h>

@interface NSString (URLEncode)

- (NSString *)urlEncode;

@end

次に、あなたのNSString+URLEncode.mで

#import "NSString+URLEncode.h"

@implementation NSString (URLEncode)

- (NSString *)urlEncode {
    NSMutableString *output = [NSMutableString string];
    const unsigned char *source = (const unsigned char *)[self UTF8String];
    int sourceLen = strlen((const char *)source);
    for (int i = 0; i < sourceLen; ++i) {
        const unsigned char thisChar = source[i];
        if (thisChar == ' '){
            [output appendString:@"+"];
        } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' ||
                   (thisChar >= 'a' && thisChar <= 'z') ||
                   (thisChar >= 'A' && thisChar <= 'Z') ||
                   (thisChar >= '0' && thisChar <= '9')) {
            [output appendFormat:@"%c", thisChar];
        } else {
            [output appendFormat:@"%%%02X", thisChar];
        }
    }
    return output;
}
@end

使用法

#import "NSString+URLEncode.h"

NSString *encodedString = [yourstring urlEncode];

サンプルコードを確認する

于 2013-06-15T10:13:50.027 に答える
0

ご存じないかもしれませんが、これを行うためのフレームワーク関数が既にあります -- -stringByAddingPercentEscapesUsingEncoding:. 次のようなことをしたいでしょう:

NSString* escapedString = [originalString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];

ここで車輪を再発明する必要はありません。

于 2013-06-15T11:26:43.307 に答える
0

[self UTF8String]が問題です。このメソッドは NSString オブジェクトで呼び出されることになっています

于 2013-06-15T10:14:23.147 に答える