经过几个小时的互联网搜索后,我仍然不确定如何做到这一点。
我在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查看示例,但它看起来似乎是如此简单的代码,并且无法弄清楚我需要多少内容。
理想情况下,我希望用户不需要接受我的实用程序可以使用这些文件,或者最多;只需要在程序运行(启动)时给予他/她同意,即。只有一次。
非常感谢任何提示,建议,答案,指示,链接或评论!