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,您可以使用普通粘贴板。

有两种简单的写法...

//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 回答
-1

您的代码通过了单元测试中的测试。如果您确实遇到问题,您应该指出您的开发环境。

测试用例“-[TestTests testExample]”已启动。
测试用例“-[TestTests testExample]”通过(0.001 秒)。

使用 SDK iOS7.1 在 Xcode 5.1.1 中测试

于 2014-07-21T02:34:47.593 回答