3

次のテストがありますが、失敗しました

NSString * expectedValue = @"achilles";

UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:@"pb1" create:YES];
pasteboard.persistent = YES;

pasteboard.string = expectedValue;    
STAssertEqualObjects(expectedValue, [pasteboard string], @"get written value from pasteboard");

[pasteboard setString:expectedValue];
STAssertEqualObjects(expectedValue, [pasteboard string], @"get written value from pasteboard");

どちらのアサートも失敗し、

'achilles' should be equal to '(null)'

ペーストボードへの書き込み、ペーストボードからの読み取り、またはその両方が間違っていますか?

4

4 に答える 4

0

問題は次のとおりだと思います:
stringプロパティは次のようにUIPasteboard定義されています(ドキュメントを参照してください

@property(nonatomic, copy) NSString *string;  

つまり、文字列を割り当てるとコピーされます。つまり、新しいオブジェクトが作成されます。それを読み戻して元のオブジェクトと比較すると、比較は失敗するはずです。

于 2014-07-21T13:52:23.490 に答える
-1

読み書きNSStringは一般的なのり紙が使えます。

2つの簡単な書き方があります...

//Method 1
NSString * str=@"your String";
UIPasteboard * pasteboard=[UIPasteboard generalPasteboard];
[pasteboard setString:];

//Method 2
NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
[pasteboard setData:data forPasteboardType:(NSString *)kUTTypeText];

そして、あなたは怒鳴るように読むことができます NSString

   UIPasteboard * pasteboard=[UIPasteboard generalPasteboard];

    //Method 1
    NSLog(@"Text =%@",[pasteboard string]);

    //Method 2
    NSData * data = [pasteboard dataForPasteboardType:(NSString*)kUTTypeText];
    NSString * str =[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"str =%@",str);

詳細については、このブログを参照してください。

于 2014-07-17T05:25:38.943 に答える
-1

UIPasteBoard から文字列を読み書きする場合は、次のようにアクセスすることで簡単に実行できます。

   [UIPasteboard generalPasteboard].string = @"your string";

   NSString *str =  [UIPasteboard generalPasteboard].string];
于 2014-07-17T05:03:26.570 に答える