文件权限OSX目标c

时间:2014-01-13 16:07:01

标签: objective-c macos file-permissions

经过几个小时的互联网搜索后,我仍然不确定如何做到这一点。

我在Objective C中为OS X创建了一个小实用程序,它是一个带有NSMenu的NSStatusItem,它显示一组驻留在用户指定的根文件夹中的文件和文件夹。
通过XCode运行应用程序时一切正常,但一旦部署似乎没有任何工作,很少能创建一些文件。

我需要我的实用程序可以创建,编写,删除,重命名,移动和放大复制用户创建的文件,文件夹和隐藏文件以及我的程序创建的文件。

是因为我没有OS X开发者帐户,因此无法签署部署?

我在下面添加了用于处理文件和文件夹的代码。

//
//  FileUtils.m
//  TODO_List
//
//  Created by Arni Asgeirsson on 28/11/13.
//  Copyright (c) 2013 Arni Asgeirsson. All rights reserved.
//

#import "FileUtils.h"

@implementation FileUtils

+(BOOL)writeFileAtPath:(NSString*)path withContent:(NSString*)content
{
    return [content writeToFile:path atomically:true encoding:NSUTF8StringEncoding error:NULL];
}

+(NSString*)readFileAtPath:(NSString*)path
{
    return [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:NULL];
}

+(BOOL)writeFolderAtPath:(NSString*)path
{
    return [FileUtils writeFolderAtPath:path withIntermediateDirectories:NO];
}

+(BOOL)writeFolderAtPathWithIntermediateDirectories:(NSString*)path
{
    return [FileUtils writeFolderAtPath:path withIntermediateDirectories:YES];
}

+(BOOL)writeFolderAtPath:(NSString *)path withIntermediateDirectories:(BOOL)writeAll
{
    if ([path length] > 0) {
        NSString *full_path = path;
        BOOL isDir = false;
        if ([[NSFileManager defaultManager] fileExistsAtPath:full_path isDirectory:&isDir]) {
            if (isDir) {
                [FileUtils deleteFolderAtPath:path];
            }
        }
        return [[NSFileManager defaultManager] createDirectoryAtPath:full_path
                                         withIntermediateDirectories:writeAll
                                                          attributes:nil
                                                               error:nil];
    }
    return NO;
}

+(NSArray*)readFolderAtPath:(NSString*)path
{
    if ([path length] > 0)
    {
        NSArray *array = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:NULL];
        if (array) {
            return array;
        }
    }
    return NULL;
}

+(BOOL)deleteFileAtPath:(NSString*)path
{
    if ([path length] > 0) {
        return [[NSFileManager defaultManager] removeItemAtPath:path error:NULL];
    }
    return NO;
}

+(BOOL)deleteFolderAtPath:(NSString*)path
{
    if ([path length] > 0) {
        return [[NSFileManager defaultManager] removeItemAtPath:path error:NULL];
    }
    return NO;
}

+(BOOL)moveFileFromPath:(NSString*)from toPath:(NSString*)to
{
    if ([from length] > 0 && [to length] > 0)
    {
        return [[NSFileManager defaultManager] moveItemAtPath:from toPath:to error:NULL];
    }
    return false;
}

+(BOOL)moveFolderFromPath:(NSString*)from toPath:(NSString*)to
{
    if ([from length] > 0 && [to length] > 0)
    {
        return [[NSFileManager defaultManager] moveItemAtPath:from toPath:to error:NULL];
    }
    return false;
}

+(BOOL)isPathFile:(NSString*)path
{
    BOOL isDir;
    return [[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDir] && !isDir;
}

+(BOOL)isPathFolder:(NSString*)path
{
    BOOL isDir;
    return [[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDir] && isDir;
}

+(BOOL)copyFileFrom:(NSString*)from to:(NSString*)to
{
    if ([[NSFileManager defaultManager] isReadableFileAtPath:from])
        return [[NSFileManager defaultManager] copyItemAtPath:to toPath:from error:nil];
    return NO;
}

+(BOOL)copyFolderFrom:(NSString*)from to:(NSString*)to
{
    // TODO: unimplemented
    return NO;
}

@end

我尝试在https://developer.apple.com/library/mac/samplecode/EvenBetterAuthorizationSample/Introduction/Intro.html#//apple_ref/doc/uid/DTS40013768-Intro-DontLinkElementID_2查看示例,但它看起来似乎是如此简单的代码,并且无法弄清楚我需要多少内容。

理想情况下,我希望用户不需要接受我的实用程序可以使用这些文件,或者最多;只需要在程序运行(启动)时给予他/她同意,即。只有一次。

非常感谢任何提示,建议,答案,指示,链接或评论!

0 个答案:

没有答案