小编Rog*_*ger的帖子

将NSAttributedString转换为纯文本

我有一个NSData包含NSAttributedString源自a的属性text()的实例NSTextView.我想将属性字符串转换为普通字符串(NSString)而不进行任何格式化以进行一些文本分析(在转换时我无法访问原始NSTextView及其NSTextStorage实例).

最好的方法是什么?

编辑:

出于好奇,我检查了以下结果:

[[[self textView] textStorage] words]
Run Code Online (Sandbox Code Playgroud)

这对于进行一些文本分析似乎很方便.结果数组包含NSSubTextStorage的实例(下面的单词"Eastern"):

东部{NSFont ="\"LucidaGrande 11.00 pt.P [](0x7ffcaae08330)fobj = 0x10a8472d0,spc = 3.48 \""; NSParagraphStyle ="对齐0,LineSpacing 0,ParagraphSpacing 0,ParagraphSpacingBefore 0,HeadIndent 0,TailIndent 0,FirstLineHeadIndent 0,LineHeight 0/0,LineHeightMultiple 0,LineBreakMode 0,Tabs(\n 28L,\n 56L,\n 84L,\n 112L,\n
140L,\n 168L,\n 196L,\n 224L,\n 252L,\n 280L,\n
308L,\n \n 336L \n),DefaultTabInterval 0,Blocks(null),Lists(null) ,BaseWritingDirection -1,HyphenationFactor 0,TighteningFactor 0.05,HeaderLevel 0"; }

NSSubTextStorage可能是一个私有类,因为我找不到任何文档.它还保留所有格式.

cocoa nsattributedstring

31
推荐指数
2
解决办法
3万
查看次数

BC的日期是Python

我打算用Python构建一个需要广泛处理BC日期的应用程序(在DB中存储和检索,进行计算).大多数日期都会有各种不确定因素,例如"公元前2000年左右".

我知道Python的datetime库只处理1 AD的日期.

到目前为止我只找到了FlexiDate.还有其他选择吗?

编辑:最好的方法可能是将它们存储为字符串(具有String作为基本数据类型)和-as建议 - 有一个自定义日期时间类,可以使它具有一些数字意义.对于大多数人来说,日期只包含一年.有一些有趣的问题需要解决,如"早期的500BC","公元前1600年至公元前1500年","公元前1800年之前".

python date

24
推荐指数
3
解决办法
3936
查看次数

如何使用NSBezierPath获得1像素线?

我正在开发一个自定义控件.其中一个要求是绘制线条.虽然这有效,但我注意到我的1像素宽线看起来并不像1像素宽线 - 我知道,它们不是像素,但你知道我的意思.它们看起来更像是两个或三个像素宽.当我绘制一条带有1像素短划线和2像素间隙的虚线时,这变得非常明显.1像素破折号实际上看起来像小线而不是点.

我已经阅读了Cocoa Drawing文档,虽然Apple提到了setLineWidth方法,但将线宽更改为小于1.0的值只会使线看起来更模糊而不是更薄.

所以,我怀疑还有其他因素会影响我的线条外观.

有任何想法吗?

cocoa nsbezierpath

14
推荐指数
4
解决办法
5165
查看次数

将NSPoint从窗口坐标转换为视图坐标

我的应用程序有一个自定义视图,显示事件的时间轴.此视图包含在一个NSScrollView支持水平滚动时间轴的位置.使用通知,我已经实现了一种机制,该机制应该显示另一个自定义视图,当用户在时间轴中单击该事件时,该视图显示有关事件的详细信息.以下是在时间轴收到事件时处理事件的代码:

NSEvent *anEvent = [aNotification object];
NSPoint aLocationInSelf = [self convertPoint: [anEvent locationInWindow] toView: self];

// Create callout view and display
NSRect aRect = NSMakeRect(aLocationInSelf.x, aLocationInSelf.y, 300, 200);
TimelineCallout *aCallout = [[TimelineCallout alloc] initWithFrame: aRect];
[self addSubview: aCallout];
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我将事件所记录的鼠标点击点从窗口坐标转换为视图(时间轴)坐标.

但是,当我使用调试器逐步完成此操作时,没有进行任何转换,并locationInSelf显示与我得到的点相同的坐标[anEvent locationInWindow].结果,标注被绘制在错误的位置或根本不可见.

我一定是做错了但是我弄不清楚是什么......

cocoa nsview nswindow

14
推荐指数
1
解决办法
8649
查看次数

NSTableView并从Finder中拖放

我正在尝试将Finder拖放到我的应用程序的NSTableView中.该设置使用一个NSTableView数组控制器,它使用Cocoa绑定到Core Data存储区作为数据源.

我做了以下,基本上是我在SO和其他网站上发现的各种博文:

awakeFromNib我的视图控制器中,我打电话给:

[[self sourcesTableView] registerForDraggedTypes:[NSArray arrayWithObjects: NSPasteboardTypePNG, nil]];
Run Code Online (Sandbox Code Playgroud)

我将NSArrayController子类化,并将以下方法添加到我的子类中(子类化的原因是数组控制器需要被告知drop,因为它充当表视图的数据源):

- (BOOL) tableView: (NSTableView *) aTableView acceptDrop: (id < NSDraggingInfo >) info row: (NSInteger) row dropOperation: (NSTableViewDropOperation)operation
Run Code Online (Sandbox Code Playgroud)

我上面的实现目前只写入日志然后返回一个布尔值YES.

- (NSDragOperation) tableView: (NSTableView *) aTableView validateDrop: (id < NSDraggingInfo >) info proposedRow: (NSInteger) row proposedDropOperation: (NSTableViewDropOperation) operation
Run Code Online (Sandbox Code Playgroud)

在IB中我有数组控制器指向我的自定义NSArrayController子类.

结果:没有.当我将PNG从桌面拖到我的桌面视图上时,没有任何反应,文件很快就会弹回原点.我一定做错了什么但不明白什么.我哪里错了?

cocoa finder drag-and-drop

11
推荐指数
1
解决办法
5513
查看次数

在Xcode中的选择器上添加符号断点

我的应用程序中存在一个错误,它显示以下(部分)堆栈跟踪:

2011-11-25 01:55:59.760 Events2[6650:403] -[Event boolValue]: unrecognized selector sent to instance 0x7fb903928670
Run Code Online (Sandbox Code Playgroud)

为了调试这个,我决定在 - [Event boolValue]上添加一个符号断点,推断当发送该选择器时,调试器将停止.

然而,没有任何反应.在设置断点之后,应用程序只需士兵并生成相同的异常而不会停止.

我已经定义了断点如下:

在此输入图像描述

我正在使用带有Xcode 4.2的LLDB调试器

xcode lldb

9
推荐指数
3
解决办法
1万
查看次数

以编程方式检索NSArrayController的选定对象

当我使用NSArrayControllerwith实例时NSManagedObject,我的印象是以下内容会给我选择的对象:

[myArrayController selection]
Run Code Online (Sandbox Code Playgroud)

但是,这给了我一些私有NS Proxy类的实例.

我用的时候:

[[myArrayController selectedObjects] objectAt: 0]
Run Code Online (Sandbox Code Playgroud)

......一切都很好,我有我的实例NSManagedObject.

我理解这些方法的必要性,因为你可能有可以进行多项选择的列表.我不明白为什么selection不给我这个例子NSManagedObject.

cocoa nsarraycontroller

7
推荐指数
1
解决办法
3427
查看次数

在可可中拖动一个矩形

我在NSView的自定义子类上绘制一个矩形,然后可以在视图的边框内拖动:

在此输入图像描述

这样做的代码是:

    // Get the starting location of the mouse down event.
NSPoint location = [self convertPoint: [event locationInWindow] fromView: nil];

// Break out if this is not within the bounds of the rect.
if (!NSPointInRect(location, [self boundsOfAllControlPoints])) {
    return;
}

while (YES) {

    // Begin modal mouse tracking, looking for mouse dragged and mouse up events
    NSEvent *trackingEvent = [[self window] nextEventMatchingMask:(NSLeftMouseDraggedMask | NSLeftMouseUpMask)];

    // Get tracking location and convert it to point in the view.
    NSPoint trackingLocation = …
Run Code Online (Sandbox Code Playgroud)

cocoa drag-and-drop

6
推荐指数
1
解决办法
4565
查看次数

Sphinx local 和 readthedocs.org 之间的差异

Django我使用为我的应用程序创建了一组文档Sphinx。我用来readthedocs.org创建该文档的公共版本。这很有效,但有一个奇怪的地方。我的readthedocs.org一些文档生成与本地构建不同。例如,对于我models.py创建的models.rst,它看起来像这样:

Models
======

.. automodule:: my_app.models

Agents
------

Agent
`````
.. autoclass:: Agent
   :members:

etc...
Run Code Online (Sandbox Code Playgroud)

对于本地构建,这将创建一个文档,其中模型名称作为标题,其文档字符串及其成员(其中#: comment...添加了文档字符串)。

然而,readthedocs.org仅生成每个模型的标题条目,仅此而已。

看起来好像readthedocs.org忽略了automoduleautoclass指令。

最初我认为这是由主题差异引起的(我bootstrap在本地使用主题,在 上使用readthedocs主题readthedocs.org),但是在设置了virtualenvonreadthedocs.org并在那里使用bootstrap主题后,没有任何变化。构建已完成,但我的模型的文档仍然缺失。

我在本地使用Sphinx 1.2.2. 我不确定 readthedocs.org 使用的是哪个版本,但我推测是 1.2.x 版本。

关于可能导致这种情况的任何想法?

python-sphinx

6
推荐指数
1
解决办法
1056
查看次数

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
查看次数