Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c CoreData、瞬态属性和EXC_坏访问。_Objective C_Core Data - Fatal编程技术网

Objective c CoreData、瞬态属性和EXC_坏访问。

Objective c CoreData、瞬态属性和EXC_坏访问。,objective-c,core-data,Objective C,Core Data,我正试图建立一个简单的文件浏览器,但我被卡住了。 我定义了类、构建窗口、添加控制器、视图。。每件事都有效,但只有一次。 再次选择NSTableView中的文件夹,或尝试从Folder.files获取数据,导致从main进行无提示EXC_BAD_访问(代码=13,地址0x0) 关于我保存在CoreData之外的文件的信息,在简单类中,我不想保存它们: #import <Foundation/Foundation.h> @interface TPDrawersFileInfo : NS

我正试图建立一个简单的文件浏览器,但我被卡住了。 我定义了类、构建窗口、添加控制器、视图。。每件事都有效,但只有一次。 再次选择NSTableView中的文件夹,或尝试从Folder.files获取数据,导致从main进行无提示EXC_BAD_访问(代码=13,地址0x0)

关于我保存在CoreData之外的文件的信息,在简单类中,我不想保存它们:

#import <Foundation/Foundation.h>

@interface TPDrawersFileInfo : NSObject
@property (nonatomic, retain) NSString * filename;
@property (nonatomic, retain) NSString * extension;
@property (nonatomic, retain) NSDate * creation;
@property (nonatomic, retain) NSDate * modified;
@property (nonatomic, retain) NSNumber * isFile;
@property (nonatomic, retain) NSNumber * size;
@property (nonatomic, retain) NSNumber * label;

+(TPDrawersFileInfo *) initWithURL: (NSURL *) url;
@end

@implementation TPDrawersFileInfo
+(TPDrawersFileInfo *) initWithURL: (NSURL *) url {
    TPDrawersFileInfo * new = [[TPDrawersFileInfo alloc] init];
    if (new!=nil) {
        NSFileManager * fileManager = [NSFileManager defaultManager];

        NSError * error;
        NSDictionary * infoDict = [fileManager attributesOfItemAtPath: [url path]  error:&error];

        id labelValue = nil;
        [url getResourceValue:&labelValue forKey:NSURLLabelNumberKey error:&error];
        new.label = labelValue;

        new.size = [infoDict objectForKey: @"NSFileSize"];
        new.modified = [infoDict objectForKey: @"NSFileModificationDate"];
        new.creation = [infoDict objectForKey: @"NSFileCreationDate"];
        new.isFile = [NSNumber numberWithBool:[[infoDict objectForKey:@"NSFileType"] isEqualToString:@"NSFileTypeRegular"]];
        new.extension = [url pathExtension];
        new.filename = [[url lastPathComponent] stringByDeletingPathExtension];

    }
    return  new;
}
请帮忙;)

_files = [NSArray arrayWithArray:result];
应该是:

_files = [[NSArray arrayWithArray:result] retain];
- (Folder * ) getFolderObjectForPath: path {
     //gives Folder object if already exist or nil if not
.....
}

- (IBAction)chooseDirectory:(id)sender {
    //Opens panel, asking for url
    NSOpenPanel * panel = [NSOpenPanel openPanel];
    [panel setCanChooseDirectories:YES];
    [panel setCanChooseFiles:NO];
    [panel setMessage:@"Choose folder to show:"];
    NSURL * currentDirectory;

    if ([panel runModal] == NSOKButton)
    {
        currentDirectory = [[panel URLs] objectAtIndex:0];
    }

    Folder * folderObject = [self getFolderObjectForPath:[currentDirectory path]];

    if (folderObject) {
        //if exist:
        currentFolder = folderObject;
    } else {
        // create new one
        Folder * newFolder = [NSEntityDescription
                              insertNewObjectForEntityForName:@"Folder"
                              inManagedObjectContext:self.managedObjectContext];
        [newFolder setValue:[currentDirectory path] forKey:@"url"];
        [foldersController addObject:newFolder];
        currentFolder = newFolder;
    }
    [foldersController setSelectedObjects:[NSArray arrayWithObject:currentFolder]];

}
_files = [NSArray arrayWithArray:result];
_files = [[NSArray arrayWithArray:result] retain];