2012-09-15 28 views
3

我有以下的測試,未能如何在iOS中對UIPasteboard寫入字符串值或從中讀取字符串值?

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)' 

我是否正確寫入剪貼板,從剪貼板讀,或兩者兼而有之?

+0

嘗試記錄'pasteboard'的值以確保其正確創建。不過,您並未使用文檔中建議的反向DNS命名方案,但其他一切看起來都不錯。如果這在單元測試中,您可能無法創建粘貼板,因爲它不在應用程序中運行? – jrturton

+0

記錄粘貼板的值也顯示爲零,並且changeCount顯示-1。 NSLog(@「pasteboard.string:%@,changeCount:%d」,pasteboard.string,pasteboard.changeCount);'shows:'pasteboard.string:(null),changeCount:-1'。我嘗試使用反向DNS命名方案,結果相同。它在單元測試中運行。 – kortina

+0

我的意思是記錄實際的紙板對象,以確保它正確創建,而不是零。 – jrturton

回答

-1

如果你正在寫或讀UIPasteBoard一個字符串,你可以很容易地通過訪問做,

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

    NSString *str = [UIPasteboard generalPasteboard].string]; 
-1

閱讀和寫作NSString你可以使用一般的粘貼板。

有兩種簡單的方法 ...

//Method 1 
NSString * [email protected]"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); 

欲瞭解更多信息,你可以refer this Blog

-1

你代碼通過了單元測試中的測試。如果您遇到問題,您應該指出您的開發環境。

測試用例' - [TestTests testExample]'已啓動。
測試用例' - [TestTests testExample]'通過(0.001秒)。

在Xcode 5.1.1測試與SDK iOS7.1

+0

您是在測試應用程序或SDK嗎?對我來說,只有當我單元測試SDK時纔會發生。 – ekeren

+0

只需複製&將你的代碼粘貼到一個測試用例中,如果你有額外的註釋,你應該編輯你的問題以便在那裏列出它 – Simon

0

我認爲問題如下:
UIPasteboardstring屬性被定義爲(see the docs

@property(nonatomic, copy) NSString *string; 

這意味着如果你給它分配一個字符串,它將被複制,即創建一個新的對象。當您讀回來並將其與原始對象進行比較時,比較必須失敗。

+0

但是斷言說'achilles'應該等於'(null)' – ekeren

相關問題