问题标签 [nsvalue]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
904 浏览

ios - 使用 NSValue 包装一个 C 指针

我有一个 C 类型的指针变量:

如何转换cTypePointerNSObject类型,反之亦然?

我应该使用NSValue吗?这样做的正确方法是什么NSValue

0 投票
2 回答
128 浏览

ios - 使用 NSValue 进行包装和解包

在我的项目中,我有这样的功能:

我需要使用函数performSelector:onThread:withObject:waitUntilDone:在另一个线程上调用此函数,如下所示:

但是函数参数的类型是NSError**. 我正在考虑重构函数的参数类型,-(void)doSomething:并将NSError**类型NSValue*作为NSValue*参数传递。

这意味着,我需要将&error(类型为NSError **)包装成 aNSValue并将其作为参数传递,然后再将其解包。如何NSError**NSValue类包装和解包?

0 投票
1 回答
546 浏览

objective-c - Swift - SCNVector4 到 NSValue 的数组?

如何将向量数组转换为 NSValue?例如,单个 SCNVector4 有一个方便的启动,但我如何将它用于数组?

喜欢:

=== 上下文 ===

我想使用着色器修改器(在 SceneKit 中)将点传递给着色器。着色器中的代码是:

我正在尝试将这些点传递给着色器:

这行不通。如果我有一个向量 ( uniform vec4 u_point;),我可以这样做:

那行得通。类似地,如果着色器使用长度为 1 的数组(即uniform vec4 u_points[1];),则之前的绑定也可以工作。所以听起来如果我可以传递长度为 4x7=28 的向量而不是数组,我应该会很好

==== 尝试 ====

1/ NSNumber 的 NSArray

正如评论中提到的,setValue可以接受任何输入,所以我尝试使用 NSNumber 的 NSArray:

但这不起作用

2/ SCNVector3 的 NSArray:没用

3/ SCNVector3 的 NSValue 的 NSArray:没用

4/ NSNumber 的 NSArray 的 NSArray:没用

如果 Apple 有一些好的文档,那就太好了……

0 投票
2 回答
1141 浏览

ios - ObjC:区分 NSValue 和 NSNumber

我有一些代码,我将在其中接收未知类型的对象。它可以是一个NSString, , 一个包含在 a或其他类NSNumber中的标量:NSValue

我需要确定 NSValue 中哪里有标量类型。

问题是识别一个 NSValue 包装的标量与一个 NSNumber。由于 NSNumber 继承自 NSValue 并且两者都是类集群,所以我很难将它们整理出来。

所以:

[value isKindOfClass:[NSValue class]]... 将 NSNumbers 视为 NSValues。

[value isMemberOfClass:[NSValue class]]...不识别 NSValues 因为实例是具体的子类型。

任何人都知道如何做到这一点?

0 投票
2 回答
319 浏览

swift - 如何在 Swift 3 中将字典表示为 NSValue?

我有以下字典:

我需要将其存储为 NSData 变量,为此必须首先将其转换为 NSValue,我尝试按以下方式进行操作:

只遇到错误:

无法将“Void”(又名“()”)类型的值转换为指定类型“NSValue”

我已经看到建议使用的 SO 答案:

但这也会产生错误:

类型 'UnsafeMutablePointer<_>' 没有成员 'load'

那么,如何在 Swift 3 中将字典转换为 NSValue 呢?

0 投票
1 回答
159 浏览

ios - NSData vs NSValue ?如何在 sendMIDISysExEvent:(NSData *)midiData 中封装 C 结构

我正在尝试找出sendMIDISysExEvent:(NSData *)midiData一种方法来重新调整音乐应用程序中的一些 MIDI 音符。我想ViewControllerSynth班级发送一条 MIDI 消息以更改 10 个音符的调音。用于重调一个音符的标准 MIDI 系统专用消息格式如下所示

legend: tt ll [kk xx yy zz](NB - 与 MIDI 1.0 详细规范 4.2, p.49 略有不同)

typedef struct可以使用单个而float不是 auint8_t来表示调谐频率,例如

播放视图控制器.h

仍然在.h

最后是浮点值...... (感谢这个答案)

播放视图控制器.m

但是,当我阅读此答案时,我开始询问如何根据将发送的信息来准备 MIDI 数据NSDatasendMIDISysExEvent:(NSData *)midiData这个答案推荐作为封装C结构的更好方法,NSValue就像我试图创建的那样,所以我很困惑。如果真的是这样,我很困惑为什么苹果会引入类似sendMIDISysExEvent:(NSData *)midiData.

我的问题是:根据消息格式(在我上面的代码中概述),我将如何准备midiData以便使用这种方法发送它?

结论

作为对接受的答案的回应,“原始二进制数据”的长度(根据字节数而不是数据类型NSData定义)解释了和之间的显着区别NSValue。这也表明sendMIDISysExEvent:(NSData *)midiData仅设计用于处理数据字节,即uint8_t而不是float.。换句话说,明智的选择是根据 MIDI 调音标准的以下摘录使用字节来表达频率值

0 投票
0 回答
65 浏览

objective-c - 将 NSValues 转换为 CGPoint

我需要将NSValues 从字典转换为CGPoint.

示例:我有一本字典,里面有 2 个项目:

当我尝试这个时,它给出了一个错误

0 投票
2 回答
133 浏览

macos - 在 NSMutableDictionary 中存储 dispatch_source_t

如果我尝试使用 dispatch_source_t 作为 NSMutableDictionary 中的键:

我收到警告:

我认为这是因为 dispatch_source_t 不使用 NSCopying 协议。我的解决方案是将 dispatch_source_t 填充到 NSValue 中:

这可以消除警告,但我不确定这是否是传递 dispatch_source_t 的正确方法。

0 投票
2 回答
281 浏览

ios - 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“JSON 写入中的类型无效(NSConcreteValue)

这是我的字典:

我在我的 API 调用中将此字典作为参数发送。

我的应用程序在这行代码崩溃:

这是它抛出的错误:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“JSON 写入中的类型无效 (NSConcreteValue)”

我知道 RoutePolyline 参数包含一个 NSValue (它应该是一个坐标数组)而不是任何对象类型,但我尝试了很多转换,但到目前为止没有任何效果。例如

0 投票
1 回答
338 浏览

objective-c - 如何在 Swift 中将自定义 Objc 结构转换为 NSValue?

我在 Objc 中定义了一个自定义结构

在 Objc 中,我可以将结构转换为 NSValue 使用

但是我怎样才能在 Swift 中做到这一点呢?