Как я могу проверить, заблокирован ли документ в 10.7?
NSDocument имеет метод isLocked, но он доступен только в версии 10.8.
Как я могу проверить, заблокирован ли документ в 10.7?
NSDocument имеет метод isLocked, но он доступен только в версии 10.8.
Вот моя реализация:
+ (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
- person Mike Abdullah; 11.04.2013
[url getResourceValue:&writable forKey:NSURLIsWritableKey error:&error]
, который немного чище
- person Mike Abdullah; 11.04.2013