小编And*_*rew的帖子

OSX 上 Swift 中的文件访问权限

我在用着:

\n\n
let dialog = NSOpenPanel()\n
Run Code Online (Sandbox Code Playgroud)\n\n

获取文件 URL。

\n\n

然后我用以下命令读取文本文件的内容:

\n\n
let content = try String( contentsOf: dialog.url)\n
Run Code Online (Sandbox Code Playgroud)\n\n

这有效!

\n\n

然后我尝试读取同一目录中具有不同扩展名的另一个文本文件:

\n\n
let b = dialog.url?.deletingPathExtension()\n// Add the new file extension\nlet c = b?.appendingPathExtension("TSN") \n\nlet content2 = try String( contentsOf: c)\n
Run Code Online (Sandbox Code Playgroud)\n\n

有了这个我得到:

\n\n

“文件 \xe2\x80\x9cFLO5.TSN\xe2\x80\x9d 无法打开\xe2\x80\x99,因为您\xe2\x80\x99没有查看它的权限。”

\n\n

如果我尝试使用 NSOpenPanel() 对话框中的 URL 打开 .tsn 文件,结果它会起作用。我需要从同一目录打开多个具有不同扩展名的数据文件。有没有办法做到这一点?

\n

macos swift3

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

在 Swift 3 中设置中长测量符号

在 Swift 中,当我创建自定义单位时,我只能定义一个符号。内置单元可以有短、中、长单元。如何为自定义单位设置其他单位样式?

extension UnitEnergy {
    static let footPounds = UnitEnergy(symbol: "ft-lbs", converter: UnitConverterLinear(coefficient: 1))
}

var test = Measurement<UnitEnergy>( value: 10, unit: .footPounds)
var formatter = MeasurementFormatter()

formatter.locale = Locale(identifier: "es")

formatter.unitStyle = .short
print( formatter.string(from: test))

formatter.unitStyle = .medium
print( formatter.string(from: test))

formatter.unitStyle = .long
print( formatter.string(from: test))

formatter.unitOptions = .providedUnit

formatter.unitStyle = .short
print( formatter.string(from: test))

formatter.unitStyle = .medium
print( formatter.string(from: test))

formatter.unitStyle = .long
print( formatter.string(from: test))
Run Code Online (Sandbox Code Playgroud)

输出:

10 J
10 J
10 julios
10 ft-lbs …
Run Code Online (Sandbox Code Playgroud)

units-of-measurement swift swift3

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

从Swift 3中的UUID获取数据

我在Objective C中编写了以下代码,我试图在Swift 3中工作.某些函数等价似乎在Swift 3中不可用.这里的代码是Objective C中的代码

NSUUID *vendorIdentifier = [[UIDevice currentDevice] identifierForVendor];
uuid_t uuid;
[vendorIdentifier getUUIDBytes:uuid];
NSData *vendorData = [NSData dataWithBytes:uuid length:16];
Run Code Online (Sandbox Code Playgroud)

我目前在Swift 3中的努力编译并运行但没有给出正确的答案.

let uuid = UIDevice.current.identifierForVendor?.uuidString
let uuidData = uuid?.data(using: .utf8)
let uuidBytes = uuidData?.withUnsafeBytes { UnsafePointer<UInt8>($0) }
let vendorData : NSData  = NSData.init(bytes: uuidBytes, length: 16)
let hashData = NSMutableData()
hashData.append(vendorData as Data)
Run Code Online (Sandbox Code Playgroud)

uuid objective-c swift swift3

2
推荐指数
4
解决办法
2277
查看次数

正确的是将数组从Metal Kernel函数传递给局部函数

我正在将计算模型从Cuda转换为Metal。

我正在尝试从内核函数传递给函数的一些全局结构数组。

我收到以下错误:

  1. 候选函数不可行:第二个参数没有从'float3 device [32]'到'float3 *'(aka'vector_float3 *')的已知转换

对于testFunction。

这是示例代码:

#include <metal_stdlib>
using namespace metal;

struct DOBJ
{
    int      num_vertex;        /* Number of vertcies */
    float3   vert       [32];  /* Rotated on CPU */    
};

bool testFunction(
                          uint num_vertex_B,
                          float3 Vertex_B[32])
{
}

kernel void TestKernel( device DOBJ *VolumeObject )
{

    int d_index = 5;

    bool SP_Check = testFunction(
                                    VolumeObject[d_index].num_vertex,
                                    VolumeObject[d_index].vert );
}
Run Code Online (Sandbox Code Playgroud)

CUDA testFunction的原始格式具有以下格式:

__device__ bool testFunction(
                          uint num_vertex_B,
                          float3 *Vertex_B)
{
}
Run Code Online (Sandbox Code Playgroud)

我在程序中有大量遵循此结构的代码。如何正确格式化testFunction以接受Vertex_B?

在warrenm的评论之后,还有更多测试代码

  1. 这样可以编译,但是我还没有尝试任何运行测试。
  2. 您可以具有两个“ testFunction”,它们的区别仅在于向量的存储位置,而是完全相同的代码。
  3. float3 Vertex_B …

metal

0
推荐指数
1
解决办法
294
查看次数

标签 统计

swift3 ×3

swift ×2

macos ×1

metal ×1

objective-c ×1

units-of-measurement ×1

uuid ×1