gpt4 book ai didi

cocoa - 自动创建冲突的 NSFileVersions

转载 作者:行者123 更新时间:2023-12-03 16:09:21 25 4
gpt4 key购买 nike

我编写了一个自定义冲突处理例程,它会自动解决 NSFileVersion 版本的冲突。现在我想编写单元测试以确保它有效。问题如下:

How do I cause/create conflicting versions within a unit test?

这本质上可以归结为:如何在不通过 iCloud 手动执行的情况下引发冲突?由于这仅用于测试目的,因此我不在乎使用私有(private) API 进行滥用或直接侵入系统 - 只要结果是从 NSFileVersion 的 +unresolvedConflictVersionsOfItemAtURL 报告的冲突即可。任何建议将不胜感激!

最大

最佳答案

您可以使用您自己的版本修补+unresolvedConflictVersionsOfItemAtURL,该版本会返回冲突版本数组:

#import <objc/runtime.h>

static IMP __originalUnresolvedConflictVersionIMP = NULL ;
static NSArray * MyNSFileVersionUnresolvedConflictVersions( id self, SEL _cmd, NSURL * url )
{
// this code just calls the original implementation...
// You can return an array of conflicting NSFileVersion objects instead...

NSLog(@"%s called\n", __PRETTY_FUNCTION__ ) ;
return (*__originalUnresolvedConflictVersionIMP)( self, _cmd, url ) ;
}


@implementation NSFileVersion (Test)

+(void)load
{
__originalUnresolvedConflictVersionIMP = class_replaceMethod( objc_getMetaClass( "NSFileVersion") , @selector( unresolvedConflictVersionsOfItemAtURL: ), (IMP)MyNSFileVersionUnresolvedConflictVersions, "@@:@" ) ;
}

@end

这足以继续吗?我可能首先在我的替代“方法”中尝试这个:

return [ [ self otherVersionsOfItemAtURL:url ] lastObject ] ;

关于cocoa - 自动创建冲突的 NSFileVersions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12133242/

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