我正在尝试将整数数组快速存储到磁盘。我可以将它们放到NSData对象中进行存储,但是很难将它们放回到数组中。我可以使用来获取COpaquePointer
数据的原始数据,data.bytes
但是找不到用该指针初始化新的swift数组的方法。有人知道怎么做吗?
import Foundation
var arr : UInt32[] = [32,4,123,4,5,2];
let data = NSData(bytes: arr, length: arr.count * sizeof(UInt32))
println(data) //data looks good in the inspector
// now get it back into an array?
您可以使用以下getBytes
方法NSData
:
// the number of elements:
let count = data.length / sizeof(UInt32)
// create array of appropriate length:
var array = [UInt32](count: count, repeatedValue: 0)
// copy bytes into array
data.getBytes(&array, length:count * sizeof(UInt32))
print(array)
// Output: [32, 4, 123, 4, 5, 2]
Swift 3(Xcode 8)的更新: Swift 3具有一个新类型struct Data
,该类型是NS(Mutable)Data
具有正确值语义的包装器。访问器方法略有不同。
数组到数据:
var arr: [UInt32] = [32, 4, UInt32.max]
let data = Data(buffer: UnsafeBufferPointer(start: &arr, count: arr.count))
print(data) // <20000000 04000000 ffffffff>
数据到数组:
let arr2 = data.withUnsafeBytes {
Array(UnsafeBufferPointer<UInt32>(start: $0, count: data.count/MemoryLayout<UInt32>.stride))
}
print(arr2) // [32, 4, 4294967295]
Swift 5更新:
数组到数据:
let arr: [UInt32] = [32, 4, UInt32.max]
let data = Data(buffer: UnsafeBufferPointer(start: arr, count: arr.count))
print(data) // <20000000 04000000 ffffffff>
数据到数组:
var arr2 = Array<UInt32>(repeating: 0, count: data.count/MemoryLayout<UInt32>.stride)
_ = arr2.withUnsafeMutableBytes { data.copyBytes(to: $0) }
print(arr2) // [32, 4, 4294967295]
问题内容: 我试图最终获得一个有效的,但似乎无法将我的字符串数据(来自)放入一个可用的对象中。 我已经看到这种方法的另一种选择: 但是我似乎找不到用例的任何文档。我愿意在必要时将字符串放入其他类型,但是使用Swift 的初始化选项似乎都不是我想要的。 问题答案: 在Swift 3中 在Swift 2中(或者如果您已经有一个实例) 在Swift 1中(或者如果您有swift ): 另请注意,这 是一
不过就是创建结构体的时候,根据每个对象的特征赋值不同的属性罢了 // 3.创建一个结构体变量 p1 := Person{"lnj", 33} per.say() p2 := Person{"zs", 18} per.Say()
问题内容: 我们如何用Swift语言(例如&在Objective-C中)创建唯一的对象列表。 问题答案: 从Swift 1.2(Xcode 6.3 beta)开始,Swift具有本机集合类型。从发行说明中: 包括一个新的数据结构,该结构提供具有完整值语义的独特元素的通用集合。它与之桥接,提供与和类似的功能。 以下是一些简单的用法示例: 但是还有更多可用的方法。 更新: 现在,集合也记录在Swift
问题内容: 我真的对在Swift中创建数组的方式感到困惑。您能否告诉我,有多少种方法可以创建一个带有细节的空数组? 问题答案: 干得好: 上面的内容还适用于其他类型,而不仅仅是字符串。这只是一个例子。 为它增值 我想您最终将要为其添加一个值! 要么 通过插入添加 一旦有了一些值,就可以插入新值而不是附加值。例如,如果要在数组的开头插入新对象(而不是将它们附加到末尾): 或者,您可以使用变量使插入更
我正在快速有效地学习单例模式来创建单例类,并找到了如下创建的最佳方法。 因为我使用了语句,所以它是只读属性,必须是线程安全的,所以从目标C开始就不需要调度一次。用于将变量设置为变量。 但这如何保证在整个应用程序中只创建一个实例呢?有什么我错过的小东西吗?
我需要创建一个对象(银行),其中包含一组客户端和bankID。我的问题是,我不知道如何在主函数中创建银行。 银行类别: 客户端类: 主要类别: 这些是问题所在: 你必须创建一个程序来模拟银行活动。该系统包括以下模块:银行—客户(客户数组)— idBank(字符串)5 BancAccount — accountNumber(字符串)—金额(浮点)客户—姓名(字符串)—地址(字符串)—账户(银行账户数