相关疑难解决方法(0)

使用Swift添加没有指针的KVO观察者

在Objective-C中,我通常会使用这样的东西:

static NSString *kViewTransformChanged = @"view transform changed";
// or
static const void *kViewTransformChanged = &kViewTransformChanged;

[clearContentView addObserver:self
                       forKeyPath:@"transform"
                          options:NSKeyValueObservingOptionNew
                          context:&kViewTransformChanged];
Run Code Online (Sandbox Code Playgroud)

我有两个重载方法可供选择,为KVO添加一个观察者,唯一的区别是context参数:

 clearContentView.addObserver(observer: NSObject?, forKeyPath: String?, options: NSKeyValueObservingOptions, context: CMutableVoidPointer)
 clearContentView.addObserver(observer: NSObject?, forKeyPath: String?, options: NSKeyValueObservingOptions, kvoContext: KVOContext)
Run Code Online (Sandbox Code Playgroud)

由于Swift不使用指针,我不确定如何取消引用指针以使用第一种方法.

如果我创建自己的KVOContext常量以便与第二种方法一起使用,我最终会问它:

let test:KVOContext = KVOContext.fromVoidContext(context: CMutableVoidPointer)
Run Code Online (Sandbox Code Playgroud)

编辑:CMutableVoidPointer和KVOContext有什么区别?有人可以给我一个例子,说明如何使用它们以及何时使用它们?

编辑#2:苹果公司的开发人员刚刚将这个发布到了论坛:KVOContext正在消失; 使用全局引用作为您的上下文是现在的方法.

pointers key-value-observing swift

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

遍历OS X上的照片库?

我正在尝试遍历OS X上用户的照片库。在iOS上,我将使用Photos框架,但是显然在OS X上不可用,而我们应该使用Media Library框架。但是,尽管我可以使用上面链接的代码来访问MLMediaSource对象,但我很难确定如何遍历照片资产。

媒体库框架文档提到了一个mediaObjectForIdentifier:方法,这听起来前途,但并不表明排序标识符应该用什么。我对iOS有相当的经验,但是在OS X上是完整的n00b,所以我感到有些迷茫。

如果我只是想遍历用户库,NSLog对每张照片进行处理,那我该怎么办?是使用Media Library Framework,还是使用其他框架(只要它适用于当前的Photos库)?

macos photo objective-c media-library photosframework

4
推荐指数
1
解决办法
567
查看次数