每当我的文档被重命名时,自动保护被阻止,重命名后的第一次保存会显示图片消息。
从技术上讲,这不是一个问题,因为任何一个按钮都会将用户带回到可自动恢复的状态,但这对我的用户来说很困惑。
我试过挂钩方法
-(void)moveToURL:(NSURL *)url completionHandler:(void (^)(NSError *))completionHandler
{
void(^takeoverblock)(NSError *error) = ^(NSError *error){
if (completionHandler) {
completionHandler(error);
}
if (!error) {
[self updateChangeCountWithToken:[self changeCountTokenForSaveOperation:NSAutosaveInPlaceOperation] forSaveOperation:NSAutosaveInPlaceOperation];
}
};
[super moveToURL:url completionHandler:takeoverblock];
}
并使用各种风格的updateChangeCount:
和updateChangeCountWithToken:
但警告始终如一。
如何在重命名/移动后将文档置于恢复标准自动保存行为的状态。?
答案 0 :(得分:2)
当底层sqlite文件上的modificationDate与fileModificationDate
实例上的NSPersistentDocument
属性不同时,会出现答案via a friendly Apple engineer,以解决重置fileModificationDate
之后的问题移动
像这样覆盖moveToUrl:
-(NSDate *)modDateForURL:(NSURL *)url
{
NSDictionary *dict = [[NSFileManager defaultManager] attributesOfItemAtPath:[url path] error:NULL];
return dict[NSFileModificationDate];
}
-(void)moveToURL:(NSURL *)url completionHandler:(void (^)(NSError *))completionHandler
{
void(^takeoverblock)(NSError *error) = ^(NSError *error){
if (completionHandler) {
completionHandler(error);
}
if (!error) {
self.fileModificationDate = [self modDateForURL:self.fileURL];
}
};
[super moveToURL:url completionHandler:takeoverblock];
}