gpt4 book ai didi

ios - 测试特定图像是否已复制到粘贴板

转载 作者:行者123 更新时间:2023-12-01 18:08:42 25 4
gpt4 key购买 nike

我正在编写一个测试来验证将图像复制到粘贴板的功能。

这是测试,因为我更愿意编写它:

// reset the paste board
UIPasteboard.generalPasteboard.image = nil; //<-- this explodes
XCTAssertNil(UIPasteboard.generalPasteboard.image);

// Grab some random existing image
UIImage *image = [UIImage imageNamed:@"some-image"];
MJKMyClass *myInstance = [[myInstance alloc] initWithImage:image];
[myInstance doSomethingThatCopiesImageToPasteboard]

XCTAssertNotNil(UIPasteboard.generalPasteboard.image);

这失败了:
failed: caught "NSInvalidArgumentException", "-[UIPasteboard setImage:]: Argument is not an object of type UIImage [(null)]"

这令人惊讶,因为根据 UIPasteboard header ,图像是一个可为空的字段。
@interface UIPasteboard(UIPasteboardDataExtensions)
<...>
@property(nullable,nonatomic,copy) UIImage *image __TVOS_PROHIBITED;
<...>
@end

我认为这意味着他们正在对参数进行运行时检查,即使它可以为空。

我尝试过的事情:
  • 通过 id 比较对象不起作用,因为 UIImage 是由 generalPastboard.image 复制的(每次调用 UIPasteboard.generalPasteboard.image 时,您都可以使用不同的实例)
  • 通过 PNG 表示进行比较可能有效,但看起来很粗糙。
  • 到目前为止,按图像大小进行比较是我最接近的选择,但也似乎是迂回的。
  • 最佳答案

    无需通过 nil 即可清除粘贴板通过使用 items属性(property):

    UIPasteboard.generalPasteboard.items = @[];

    或者在 Swift 中:
    UIPasteboard.generalPasteboard().items = []

    为了比较 UIImages,你可能想看看其他一些问题:
  • How to compare two UIImage objects
  • https://stackoverflow.com/search?q=uiimage+compare
  • 关于ios - 测试特定图像是否已复制到粘贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36091937/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com