【发布时间】:2012-08-21 16:28:19
【问题描述】:
如何检查文档是否在 10.7 中被锁定?
NSDocument 有一个方法 isLocked,但它仅在 10.8 上可用。
【问题讨论】:
标签: cocoa nsdocument
如何检查文档是否在 10.7 中被锁定?
NSDocument 有一个方法 isLocked,但它仅在 10.8 上可用。
【问题讨论】:
标签: cocoa nsdocument
这是我的实现:
+ (BOOL)isDocumentLocked:(NSDocument*)doc
{
if (doc == nil)
{
return NO;
}
else if ([doc respondsToSelector:@selector(isLocked)]) // 10.8
{
return [doc isLocked];
}
else // OS X version < 10.8
{
NSError * error;
BOOL isAutosavingSafe = [doc checkAutosavingSafetyAndReturnError:&error];
if (!isAutosavingSafe)
{
return YES;
}
if (doc.fileURL == nil)
return NO;
NSFileManager* fm = [NSFileManager defaultManager];
NSString* path = doc.fileURL.absoluteURL.path;
if (![fm isWritableFileAtPath:path])
return YES; // No writing permissions
NSDictionary *attributes = [fm attributesOfItemAtPath:path error:&error];
BOOL isLocked = [[attributes objectForKey:NSFileImmutable] boolValue];
if (isLocked)
{
return YES;
}
}
return NO;
}
【讨论】:
absoluteURL
[url getResourceValue:&writable forKey:NSURLIsWritableKey error:&error] 更简洁