1
我跑在操场下面的(我在Xcode 7.3.1以及Xcode的8.1测试,并看到相同的行为):是什么导致来自UIPasteboard的项目转换为NSConcreteMutableData?
import UIKit
let key: String = "some_key"
let value: String = "some_value"
UIPasteboard.general.items = [[key: value]]
let item = UIPasteboard.general.items.first
if let item = UIPasteboard.general.items.first {
switch item[key] {
case let x as String:
print("This is expected")
case let x as Any:
type(of: x)
print("This is unexpected")
default:
print("This is unexpected")
}
} else {
print("This is unexpected")
}
而且我注意到String
,我投入剪贴板实际上被桥接为NSConcreteMutableData
。
我的问题有以下几点:
这是造成内部UIPasteboard实现(即明确从
NSString
转换为NSConcreteMutableData
),或者是这个标准的ObjC - 斯威夫特桥接行为?我该如何解决这个问题才能在UIPasteboard中存储自定义键/值对?
以下是这看起来像一个操场,以方便参考:
请注意,如果你导入MobileCoreServices',你可以使用'kUTTypeText作为String'作为你的密钥而不是硬编码''public.text'',如果你想指定UTI。 –