바로 가기 위해 오브젝티브-c 의 연결 문자열을 발생합니까 ('스테링뱌펜딩스트링') '또는' 일반적으로 shortcuts 협력을 위해 산슬링?
예를 들어, I& # 39; d like to make:
NSString *myString = @"This";
NSString *test = [myString stringByAppendingString:@" is just a test"];
좀 더 다음과 같습니다.
string myString = "This";
string test = myString + " is just a test";
[NSString stringWithFormat:@"%@/%@/%@", one, two, three];
NSLog(@"%@", [Util append:one, @" ", two, nil]); // "one two"
NSLog(@"%@", [Util append:three, @"/", two, @"/", one, nil]); // three/two/one
같은 항목을 사용하여
+ (NSString *) append:(id) first, ...
{
NSString * result = @"";
id eachArg;
va_list alist;
if(first)
{
result = [result stringByAppendingString:first];
va_start(alist, first);
while (eachArg = va_arg(alist, id))
result = [result stringByAppendingString:eachArg];
va_end(alist);
}
return result;
}
, 리터럴을 경우 2 산슬링 그냥 이렇게 할 수도 있습니다.
NSString *joinedFromLiterals = @"ONE " @"MILLION " @"YEARS " @"DUNGEON!!!";
#define STRINGA @"Also, I don't know "
#define STRINGB @"where food comes from."
#define JOINED STRINGA STRINGB
즐기세요.
난 계속 로그하고 항상 다니엘을 통해 해답을 찾기 위해 다시 이 정렬 사용할 수 있는 이 단순한 솔루션 필요에 따라 다양한 변수가 있다.
[NSString stringWithFormat:@"%@/%@/%@", three, two, one];
예를 들면 다음과 같습니다.
NSString *urlForHttpGet = [NSString stringWithFormat:@"http://example.com/login/username/%@/userid/%i", userName, userId];
, 는 콜론) 은 특수 기호 등 일부가 아니라 함께 같은 방법을 통해 추가할 수 있으며, 이 '산슬링 서명입니다 에스테드 범주입니다 비 관용적' 이 string concatenation 스타일.
[@"This " : @"feels " : @"almost like " : @"concatenation with operators"];
콜론 분판된 인수만 찾을 때 유용한 많은 정의할 수 있습니다. -)
// NSString+Concatenation.h
#import <Foundation/Foundation.h>
@interface NSString (Concatenation)
- (NSString *):(NSString *)a;
- (NSString *):(NSString *)a :(NSString *)b;
- (NSString *):(NSString *)a :(NSString *)b :(NSString *)c;
- (NSString *):(NSString *)a :(NSString *)b :(NSString *)c :(NSString *)d;
- (NSString *)concat:(NSString *)strings, ...;
@end
// NSString+Concatenation.m
#import "NSString+Concatenation.h"
@implementation NSString (Concatenation)
- (NSString *):(NSString *)a { return [self stringByAppendingString:a];}
- (NSString *):(NSString *)a :(NSString *)b { return [[self:a]:b];}
- (NSString *):(NSString *)a :(NSString *)b :(NSString *)c
{ return [[[self:a]:b]:c]; }
- (NSString *):(NSString *)a :(NSString *)b :(NSString *)c :(NSString *)d
{ return [[[[self:a]:b]:c]:d];}
- (NSString *)concat:(NSString *)strings, ...
{
va_list args;
va_start(args, strings);
NSString *s;
NSString *con = [self stringByAppendingString:strings];
while((s = va_arg(args, NSString *)))
con = [con stringByAppendingString:s];
va_end(args);
return con;
}
@end
// NSString+ConcatenationTest.h
#import <SenTestingKit/SenTestingKit.h>
#import "NSString+Concatenation.h"
@interface NSString_ConcatenationTest : SenTestCase
@end
// NSString+ConcatenationTest.m
#import "NSString+ConcatenationTest.h"
@implementation NSString_ConcatenationTest
- (void)testSimpleConcatenation
{
STAssertEqualObjects([@"a":@"b"], @"ab", nil);
STAssertEqualObjects([@"a":@"b":@"c"], @"abc", nil);
STAssertEqualObjects([@"a":@"b":@"c":@"d"], @"abcd", nil);
STAssertEqualObjects([@"a":@"b":@"c":@"d":@"e"], @"abcde", nil);
STAssertEqualObjects([@"this " : @"is " : @"string " : @"concatenation"],
@"this is string concatenation", nil);
}
- (void)testVarArgConcatenation
{
NSString *concatenation = [@"a" concat:@"b", nil];
STAssertEqualObjects(concatenation, @"ab", nil);
concatenation = [concatenation concat:@"c", @"d", concatenation, nil];
STAssertEqualObjects(concatenation, @"abcdab", nil);
}
만드는 방법:
- (NSString *)strCat: (NSString *)one: (NSString *)two
{
NSString *myString;
myString = [NSString stringWithFormat:@"%@%@", one , two];
return myString;
}
그런 다음 필요한 어떤 기능을 설정하고, 이를 위해 무엇이든 간에 이 함수의 반환 값의 문자열을 또는 텍스트 필드.
산슬링 만들기 위해, 또는 단축, & # 39 를 사용하여 변환하십시오 구체화하십시오 c++컴파일러는 +& # 39;; 할 수 있다.
Use this way.
NSString *string1, *string2, *result;
string1 = @"This is ";
string2 = @"my string.";
result = [result stringByAppendingString:string1];
result = [result stringByAppendingString:string2];
또는
result = [result stringByAppendingString:@"This is "];
result = [result stringByAppendingString:@"my string."];
// stringConcat(...)
// A shortcut for concatenating strings (or objects' string representations).
// Input: Any number of non-nil NSObjects.
// Output: All arguments concatenated together into a single NSString.
#define stringConcat(...) \
[@[__VA_ARGS__] componentsJoinedByString:@""]
- (void)testStringConcat {
NSString *actual;
actual = stringConcat(); //might not make sense, but it's still a valid expression.
STAssertEqualObjects(@"", actual, @"stringConcat");
actual = stringConcat(@"A");
STAssertEqualObjects(@"A", actual, @"stringConcat");
actual = stringConcat(@"A", @"B");
STAssertEqualObjects(@"AB", actual, @"stringConcat");
actual = stringConcat(@"A", @"B", @"C");
STAssertEqualObjects(@"ABC", actual, @"stringConcat");
// works on all NSObjects (not just strings):
actual = stringConcat(@1, @" ", @2, @" ", @3);
STAssertEqualObjects(@"1 2 3", actual, @"stringConcat");
}
// stringConcat(...)
// A shortcut for concatenating strings (or objects' string representations).
// Input: Two or more non-nil NSObjects.
// Output: All arguments concatenated together into a single NSString.
#define stringConcat(str1, str2, ...) \
[@[ str1, str2, ##__VA_ARGS__] componentsJoinedByString:@""];
웹 서비스, 내가 찾을 때 건물 요청에 대해 다음과 같은 일을 하면 Xcode 에 연결 판독값 매우 간단합니다.
NSString* postBody = {
@"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
@"<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
@" <soap:Body>"
@" <WebServiceMethod xmlns=\"\">"
@" <parameter>test</parameter>"
@" </WebServiceMethod>"
@" </soap:Body>"
@"</soap:Envelope>"
};
짧은보기 아펜드스타링 (AS), 매크로를 만들어 .< br>. < pre>;
산슬링 * 미스트링 = @" This";;
산슬링 * 테스트 = AS (미스트링, @". 단순히 test"). < /pre>;
매크로를 사용하는 경우, 물론 그냥 바리아디스 인수만 http://schmidt. devlib. EthanB& 함께 # 39 의 그 답이 있다.
NSString *label1 = @"Process Name: ";
NSString *label2 = @"Process Id: ";
NSString *processName = [[NSProcessInfo processInfo] processName];
NSString *processID = [NSString stringWithFormat:@"%d", [[NSProcessInfo processInfo] processIdentifier]];
NSString *testConcat = [NSString stringWithFormat:@"%@ %@ %@ %@", label1, processName, label2, processID];
NSString *myString = @"This";
NSString *test = [myString stringByAppendingString:@" is just a test"];
지금 있는 객관적 캜 내 생각에 이것은 몇 년 후 가장 좋은 방법은 캜 developer. 작동합니까 목표 달성 너희는너희가 위해 노력하고 있다.
키잉하는 " 에서 시작, N". xcode 로 자동 완성, 애플리케이션 및 it in your " NSString". 키를 str" "; 자동 완성, 이를 위해 stringByAppendingString" ";). 따라서 keystrokes 는 매우 제한적이다.
한 번, @" " 확보하십시오 멈춤으로 강타하고 있다. 탭 키 및 코드 작성 과정에서 판독값 더 이상 문제가 됩니다. A matter of 것 뿐입니다.
'어떻게' 스테링뱌펜딩스트링 단축 및 사용 # define :
#define and stringByAppendingString
따라서 사용합니다.
NSString* myString = [@"Hello " and @"world"];
문제는, 이 두 문장열 you& 데 필요한 추가 브래킷에 사용할 수 있습니다 자세한 첨부됩니다 # 39 랩, re:
NSString* myString = [[@"Hello" and: @" world"] and: @" again"];
NSString *label1 = @"Process Name: ";
NSString *label2 = @"Process Id: ";
NSString *processName = [[NSProcessInfo processInfo] processName];
NSString *processID = [NSString stringWithFormat:@"%d", [[NSProcessInfo processInfo] processIdentifier]];
NSString *testConcat = [NSString stringWithFormat:@"%@ %@ %@ %@", label1, processName, label2, processID];
'창' lldb 하고 있는 것은 다음
[NSString stringWithFormat:@"%@/%@/%@", three, two, one];
어떤 오류가 발생했습니다.
대신 '와' 니트비트포르마 할당하지 사용 방법:
[[NSString alloc] initWithFormat:@"%@/%@/%@", @"three", @"two", @"one"];
NSNumber *lat = [NSNumber numberWithDouble:destinationMapView.camera.target.latitude];
NSNumber *lon = [NSNumber numberWithDouble:destinationMapView.camera.target.longitude];
NSString *DesconCatenated = [NSString stringWithFormat:@"%@|%@",lat,lon];