0

フロートをペーストボードにコピーしたいのですが、後で数字として貼り付けたいので、重要なのは値です。

で試しました:

[pasteboard setValue:SomeNSNumberWhereIStoredTheFloat forPasteboardType:@"NSNumber"];

それで、貼り付けるものは何もありませんでしたpasteboard.string = numberInStringValue. では、数字を一連の文字として貼り付けます.

ご協力いただきありがとうございます

4

3 に答える 3

2

ペーストボード データの「タイプ」はクラスの名前ではなく、Uniform Type Identifier (UTI、または UTI が他に何を表しているか覚えている場合は単に UT) です。この場合、データには関連付けられた UTI (数値は抽象的な概念であり、データ形式ではありません。)その数値を格納して取得する最善の方法を見つけ出す必要があります。

この場合、数値を文字列にフォーマットするだけで十分だと思います。

NSString *numString = [NSString stringWithFormat:@"%f", theFloatValue];
pasteboard.string = numString;

そして後で、それを取り戻すとき:

float theFloatValue2 = [pasteboard.string doubleValue];

nilこれは、チェックやその他のエラー処理を考慮していません。

非常に高い精度が必要な場合は、NSDataベースのストレージ手法を調査する必要がある場合があります。

于 2012-08-11T01:27:32.857 に答える
0

直接収納できNSNumberます。API から次のメソッドを使用できます。

setValue:forPasteboardType:

このメソッドを使用して、NSString、NSArray、NSDictionary、NSDate、NSNumber、または NSURL クラスのオブジェクトである標準のプロパティ リスト オブジェクトであるオブジェクトをペーストボードに配置します。

valueForPasteboardType:

このメソッドは、表現型 (通常は UTI) に適したクラス型のオブジェクトを返そうとします。たとえば、表現型が kUTTypePlainText (public.plain-text) の場合、メソッドは NSString オブジェクトを返します。メソッドが表現型からクラス型を判別できない場合、オブジェクトをジェネリック プロパティ リスト オブジェクトとして返します。プロパティ リスト オブジェクトには、NSString、NSArray、NSDictionary、NSDate、または NSNumber オブジェクトが含まれ、NSURL オブジェクトも可能です。メソッドが値をプロパティ リスト オブジェクトとしてデコードできない場合、ペーストボード項目を NSData オブジェクトとして返します。

本当の問題は、正しい UTI を見つけることにあるため、クラスは自動的に を返し、代わりにオブジェクトNSNumberを返しません。NSData

さらに悪いことに、コードはドキュメントで宣伝されているようには機能していないようです。何人かの人から、このメソッドは常に you を返すと聞いていますNSDataこの回答では、このような問題の例 (および回避策) を見つけることができます。

于 2013-07-31T19:09:42.013 に答える