标签: nsdocument

Cocoa NSDocument:让自动保存工作

文档只是声明setAutosavingDelay在共享文档控制器上设置为> 0但应该在调用之后

[[NSDocumentController sharedDocumentController] setAutosavingDelay:2.0];
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,自动保存似乎不起作用:我既没有看到任何内容~/Library/Autosave Information/,也没有看到

[[[NSDocumentController sharedDocumentController] currentDocument] autosavedContentsFileURL]
Run Code Online (Sandbox Code Playgroud)

初始化.

请注意,在我的应用程序中,正常加载和保存工作正常(keyedarchivers,我的文档的基于nscoding的类等).

cocoa nsdocument nsdocumentcontroller

5
推荐指数
1
解决办法
2810
查看次数

NSDocument架构的优缺点

有没有人有任何他们想分享的NSDocument利弊?

特别是:

  • 一旦依赖NSDocument架构,如果需要,难以重构吗?

  • 是否有性能影响?

  • 它会以某种/多种方式限制你吗?

cocoa objective-c nsdocument

5
推荐指数
1
解决办法
1488
查看次数

如何从NSDocumentDirectory读取数据

大家好我正在处理一个记录用户声音并将其保存到NSDocumentDirectory的应用程序.数据文件保存得很好.但问题是我想播放这些文件.我正在使用表视图来填充它NSDocumentDirectory中的文件数量.但是该表只显示当前声音文件的一个单元格.我在某处做错了请帮助我.我正在使用此代码进行播放.

-(void)PlayAudio
{


    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSLog(@"strffdsa %@",documentsDirectory);
    NSURL *fileURL = [NSURL fileURLWithPath:recorderFilePath];

    player =    [[AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: nil];
    player.numberOfLoops = 0;
    //[fileURL release];

    [player play];
    [player setDelegate: self];

}
Run Code Online (Sandbox Code Playgroud)

其中,recorderFilePath是文件的路径.每次在NSDate frmattor的帮助下,路径都是新的.但是没有得到如何使用驻留在DocumentDirectory中的所有文件填充表视图.

请帮助我......我是这项技术的新手.

在此先感谢所有........

iphone nsdocument

5
推荐指数
1
解决办法
4190
查看次数

NSDocumentController如何插入我的基于文档的应用程序?

我正在构建我的第一个严肃的Cocoa应用程序.它是一个基于文档的应用程序,使用Core Data进行持久存储.使用Xcode"新项目"模板选项,我的项目开始时使用了几个默认类:

  • MainMenu.xib(我的应用程序的主菜单)
  • EventDocument.xib(我的应用程序的主窗口)
  • EventDocument.h和EventDocument.m(持久文档类)

我从那里接受了设计并且它的工作都相当不错,但是通过另一个问题,我遇到了一个我不知道的Cocoa类NSDocumentController.该类显然提供了用于管理基于文档的应用程序中的文档类的默认逻辑.

我的问题是这个类如何进入我的应用程序 - 如果有的话 - 我是否需要它?此时,我使用EventDocument类作为一种顶级控制器.它从菜单中选择用户选择(带有iTunes选项的树形视图),调出处理这些选项的不同视图/控制器并传递托管对象上下文.如果NSDocumentController是"走的路",为什么Apple不会将其作为项目模板的一部分生成?

xcode cocoa nsdocument

5
推荐指数
1
解决办法
3405
查看次数

建议的无标题NSDocument的保存名称

有没有办法建议用于nsdocument框架中的文档的初始保存对话框(无标题文档)的文件名?

macos cocoa nsdocument

5
推荐指数
1
解决办法
1290
查看次数

将大型 SQLite 数据库包装在 NSDocument 包中

我正在编写一个基于 NSDocument 的应用程序,它有一个 SQLite 数据库,我希望将其标记在文档包中。它由一定数量的表组成,每个表的架构是时间戳和值。该数据库一开始很小,但随着时间的推移可能会增长到相当大的数量。该应用程序正在“在 NSDocument 的背后”更新数据库。

到目前为止,我尝试做的是重写该writeToURL:ofType:error:方法,该方法可以传递一些复杂的 URL,例如:

文件://localhost/private/var/folders/mr/l1z6gdls0fb3t28m3z1bz6lw0000gn/T/TemporaryItems/(A%20Document%20Being%20Saved%20By%MyApp%2031)/Untitled.wsdoc

此时,如果您愿意,我被迫使用内存数据库,然后将该数据库的全部内容吸收到 NSFileWrapper 中。它有效,但扩展性不佳。如果数据库很大,例如 200-300MB 或更多(这并非超出此应用程序的可能性范围),那么每次有人按Command- (或者更糟糕的是,我打开自动保存)时执行他的操作可能是一项非常昂贵的操作。S

所以我想知道:是否可以管理 NSDocument 权限范围之外的 SQLite 文件,同时仍将其驻留在文档包中,以便数据库在移动/复制时可以存在于包中?

sqlite nsdocument

5
推荐指数
0
解决办法
352
查看次数

音乐转换以及如何知道写作是否完成

我不得不将大文件大小的歌曲从iTunes库转换为较小的8K歌曲文件.

当我执行转换异步时,即使写入doc文件夹未完成,bool也总是返回true.目前我正在使用10秒的延迟再次调用该功能,它在iPhone 5s的临时工作正常,但我想迎合较慢的设备.

请在我的代码上给我一些指针/推荐.

-(void)startUploadSongAnalysis
{
     [self updateProgressYForID3NForUpload:NO];

    if ([self.uploadWorkingAray count]>=1)
    {
        Song *songVar = [self.uploadWorkingAray objectAtIndex:0];//core data var
        NSLog(@"songVar %@",songVar.songName);
        NSLog(@"songVar %@",songVar.songURL);
        NSURL *songU = [NSURL URLWithString:songVar.songURL]; //URL of iTunes Lib
       // self.asset = [AVAsset assetWithURL:songU];
       // NSLog(@"asset %@",self.asset);
        NSError *error;
        NSString *subString = [[songVar.songURL componentsSeparatedByString:@"id="] lastObject];
        NSString *savedPath = [self.documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"audio%@.m4a",subString]];//save file name of converted 8kb song
        NSString *subStringPath = [NSString stringWithFormat:@"audio%@.m4a",subString];

        if ([self.fileManager fileExistsAtPath:savedPath] == YES)
            [self.fileManager removeItemAtPath:savedPath error:&error];
        NSLog(@"cacheDir %@",savedPath);

        //export low bitrate song to …
Run Code Online (Sandbox Code Playgroud)

objective-c nsdocument ios avassetwriter avassetexportsession

5
推荐指数
1
解决办法
418
查看次数

在基于文档的 OS X 应用程序中的 NSViewController 上设置representedObject

我正在开发一个简单的 OS X Cocoa 应用程序,其中用户填写表单,应用程序执行一些在其他字段中弹出的计算。

我从 Xcode 6.3.2(适用于 Yosemite)上默认的基于文档的应用程序模板开始。该模板包含 NSDocument 的子类和 NSViewController 的子类。该接口在 Storyboard 中定义。NSDocument 在 makeWindowControllers 中从 Storyboard 初始化接口。

我在将接口片段绑定到 ViewController 的representedObject 时遇到了麻烦——结果我绑定到了 nil。ViewController 的 setRepresentedObject 方法永远不会被调用。

我尝试让 ViewController 在 vi​​ewDidLoad 中调用 setRepresentedObject 本身,但当时尚未设置 WindowController 的文档属性(它返回 nil)。

我不清楚是否可以从 NSDocument 获取 ViewController 的实例 - NSDocument 知道它的 window/WindowController,但我不确定如何从这些类中找到 ViewController。

我想知道 Xcode/Apple 的惯用方式来做到这一点。无论是通过故事板视图还是在我的代码中以编程方式实现。

如果可能的话,我还想避免代码耦合得太紧密。

cocoa objective-c nsdocument nsviewcontroller

5
推荐指数
1
解决办法
3223
查看次数

使用NSDocument时如何将故事板视图绑定到Core Data实体?

我正在构建一个使用核心数据,NSDocument,故事板和Cocoa绑定的OS X应用程序.

我的期望是发生以下情况:

  1. 创建MyDocument(NSDocument子类)的实例.

  2. MyDocument创建NSManagedObjectContext表示文档数据的核心数据.

  3. MyDocumentNSWindowController通过其标识符从故事板中实例化一个.

  4. 在故事板中,窗口控制器包含DocumentEditorViewController(NSViewController子类),用于显示和编辑文档.

  5. 在故事板中,DocumentEditorViewController有一个NSArrayController绑定到MyDocument托管对象上下文.

  6. 在故事板中,DocumentEditorViewController有一个绑定到的表视图NSArrayController.

这样,UI中的任何更改都可以使用它NSManagedObjectContext,而无需任何粘合代码.

我希望这是直截了当的,因为我相信我正按照预期的方式使用这些技术.但是我无法使绑定工作,特别是在第5步和第6步.我发现的所有项目模板和示例项目都不使用Core Data,不使用故事板,或者不使用NSDocuments.

应该绑定哪些对象?NSArrayController的类,键和密钥路径应该是什么?

回答这个问题的另一种方法是指出一个使用所有这些技术的工作示例项目.

core-data nsdocument cocoa-bindings xcode-storyboard

5
推荐指数
1
解决办法
2541
查看次数

Cocoa:使用 NSDocument 从另一个应用程序更改文件后如何重新读取文件内容?

我有一个基于文档的可可应用程序,它打开一个 .md 文件,以良好的格式显示降价内容。如果我在另一个应用程序(例如 textedit)中更改 .md 文件,我想在我的应用程序中重新加载视图。

这是我迄今为止所做的工作:

import Cocoa

class Document: NSDocument {

   var fileContent = "Nothing yet :("

    override init() {    
        // Add your subclass-specific initialization here.
        super.init()
    }

    override class var autosavesInPlace: Bool {
        return false
    }

    override func makeWindowControllers() {
        // Returns the Storyboard that contains your Document window.
        let storyboard = NSStoryboard(name: NSStoryboard.Name("Main"), bundle: nil)
        let windowController = storyboard.instantiateController(withIdentifier: NSStoryboard.SceneIdentifier("Document Window Controller")) as! NSWindowController
        self.addWindowController(windowController)
    }

    override func data(ofType typeName: String) throws -> Data {
        throw …
Run Code Online (Sandbox Code Playgroud)

macos cocoa nsdocument swift

5
推荐指数
1
解决办法
328
查看次数