我正在从NSData对象创建一个NSInputStream,但是一旦创建了流,就会报告hasBytesAvailable的NO:
NSData* data = [outputStream propertyForKey: NSStreamDataWrittenToMemoryStreamKey];
NSLog(@"creating stream with data 0x%x length %d", [data bytes], [data length]);
NSInputStream *insrm = [[NSInputStream alloc] initWithData:data];
[insrm open];
uint8_t* buf = NULL;
NSUInteger len;
BOOL result = [insrm getBuffer:&buf length:&len];
BOOL hasbytes = [insrm hasBytesAvailable];
NSLog(@"getBuffer:%d hasBytes:%d", result, hasbytes);
NSLog(@"created inputstream data %d len %d", buf, len);
Run Code Online (Sandbox Code Playgroud)
日志:
[26797:20b] creating stream with data 0x7050000 length 34672
[26797:20b] getBuffer:0 hasBytes:0
[26797:20b] created inputstream data 0 len 0
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
我已使用以下代码行将我的.caf音频文件转换为NSData对象:
NSData *audioData = [NSData dataWithContentsOfFile:[MyRecorderFilePathURL path] options:
0 error:&err];
我这样做是为了通过Web服务将二进制对象上传到服务器.如何将audioData转换回可以使用的.caf文件AVAudioPlayer?
我已经根据 Apple Developer 网站上提供的示例在 iOS 应用程序中实现了公钥私钥 RSA 加密。
如果我加密并返回uint8_t cipherBuffer,然后从 中解密,它会完美地工作uint8_t cipherBuffer。但是我需要将加密数据存储到.xcdata模型中NSData。
我遇到的问题是在解密时可靠地将其转换uint8_t cipherBuffer为NSData和/或将其转换NSData回。uint8_t解密的数据似乎被截断。
这就是我将uint8_t加密缓冲区转换为NSData:
return [NSData dataWithBytesNoCopy:cipherBuffer length:BUFFER_SIZE];
Run Code Online (Sandbox Code Playgroud)
这就是我在解密时将加密数据转换NSData回缓冲区的方法:uint8_t
uint8_t *cipherBuffer = (uint8_t*)[cipherText bytes];
Run Code Online (Sandbox Code Playgroud) 我想将每个NSData对象保存到iOS中的临时目录,我希望每个新对象都覆盖旧对象.
对象将具有不同的格式和不同的大小.
我知道你是如何得到这条路的,NSTemporaryDirectory但是NSData每次添加一个新文件时,你怎么能在那里覆盖旧文件呢?
我正在存储大小超过1 GB的视频文件并存储到homeDirectory中.我试图转换为NSData对象如下
NSData*videoData = [[NSData alloc] initWithContentsOfFile:filePath];
但在这里我得到的视频数据为零.当我尝试500 MB的视频时它工作正常.
转换为NSData时,大小是否有任何限制?
今天我的任务是将字节数组转换为图像
首先,我尝试将图像转换为字节数组:-
要将 Image 转换为 Byte 数组,我们首先要做的是将特定的图像 [ UIImage]NSData转换为。然后我们将其转换NSData为 Byte 数组。这里我将给出示例代码,只需通过...
//Converting UIImage to NSData
UIImage *image = [UIImage imageNamed: @"photo-04.jpg"];
NSData *imageData = UIImagePNGRepresentation(image);
//Converting NSData to Byte array
NSUInteger len = [imageData length];
NSLog(@"Byte Lendata1 %lu",(unsigned long)len);
Byte *byteData = (Byte*)malloc(len);
memcpy(byteData, [imageData bytes], len);
Run Code Online (Sandbox Code Playgroud)
我尝试这样将字节转换为 imageView
const unsigned char *bytes = [imageData bytes];
NSUInteger length = [imageData length];
NSMutableArray *byteArray = [NSMutableArray array];
for (NSUInteger i = 0; i < length; i++) …Run Code Online (Sandbox Code Playgroud) 我试图通过制作一个小应用程序来了解Swift(在与Obj-C相对胜任之后).我想使用NSUserDefaults持久保存少量数据,但我遇到了问题.
我初始化一个空数组的元组,如下所示:
var costCategoryArray: [(name:String, defaultValue:Int, thisMonthsEstimate:Int, sumOfThisMonthsActuals:Int, riskFactor:Float, monthlyAverage:Float)]=[]
Run Code Online (Sandbox Code Playgroud)
当数组有一个条目时,我想用标准的Swift代码将数组保存到NSUserDefaults,如下所示:
NSUserDefaults.standardUserDefaults().setObject(costCategoryArray, forKey: "financialData")
NSUserDefaults.standardUserDefaults().synchronize()
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,说元组数组不符合AnyObject类.所以我试着把它变成NSData:
var myNSData: NSData = NSKeyedArchiver.archivedDataWithRootObject(costCategoryArray)
var myUnarchivedData: Array = NSKeyedUnarchiver.unarchiveObjectWithData(myNSData)
Run Code Online (Sandbox Code Playgroud)
...但是在转换为NSData期间我遇到了同样的错误.我的数组持有的对象不符合AnyObject.我还尝试在每个阶段使用以下内容使其不可变:
let immutableArray = costCategoryArray
Run Code Online (Sandbox Code Playgroud)
我也试过创建一个类而不是使用元组,我理解它会使它符合AnyObject:
class costCategory : NSObject {
var name : String
var defaultValue : Int
var thisMonthsEstimate : Int
var sumOfThisMonthsActuals : Int
var riskFactor : Float
var monthlyAverage : Float
init (name:String, defaultValue:Int, thisMonthsEstimate:Int, sumOfThisMonthsActuals:Int, riskFactor:Float, monthlyAverage:Float) {
self.name = name
self.defaultValue = defaultValue
self.thisMonthsEstimate = thisMonthsEstimate
self.sumOfThisMonthsActuals = …Run Code Online (Sandbox Code Playgroud) 我有一个NSData带有十六进制数据的对象,我想将其转换为 ASCII 字符串。我见过几个与我类似的问题,但它们都在 Objective-C 中和/或它们将字符串转换为十六进制数据,而不是相反。
我发现这个功能,但它不能在斯威夫特2和工作的苹果文档不解释老之间的差异stride和新的stride(它并不能解释所有步幅):
func hex2ascii (example: String) -> String
{
var chars = [Character]()
for c in example.characters
{
chars.append(c)
}
let numbers = stride(from: 0, through: chars.count, by: 2).map{ // error: 'stride(from:through:by:)' is unavailable: call the 'stride(through:by:)' method instead.
strtoul(String(chars[$0 ..< $0+2]), nil, 16)
}
var final = ""
var i = 0
while i < numbers.count {
final.append(Character(UnicodeScalar(Int(numbers[i]))))
i++
}
return final
}
Run Code Online (Sandbox Code Playgroud)
我不知道是什么stride …
我有一个返回某些系统值的函数.它在Swift 2.2中运行良好,我刚刚升级到Xcode 8和Swift 3,现在它失败了.
func ioPlatExpertDevString(_ property: String) -> String {
// Start tapping in to the IO Service
let ioPlatformExpertDevice:io_service_t? = IOServiceGetMatchingService(kIOMasterPortDefault, IOServiceMatching("IOPlatformExpertDevice"))
var sAnswer = "Not Found"
let cfAnswer:AnyObject! = IORegistryEntryCreateCFProperty(ioPlatformExpertDevice!, "\(property)" as CFString!, kCFAllocatorDefault, 0).takeRetainedValue()
if (cfAnswer != nil) {
let nsAnswer = (cfAnswer as! NSString)
sAnswer = nsAnswer.uppercased
}
// Close the IO Service
IOObjectRelease(ioPlatformExpertDevice!)
return sAnswer
}
Run Code Online (Sandbox Code Playgroud)
之前,我使用的是"CFData"而不是"AnyObject".它构建良好,但在运行时,我收到以下错误:
无法将类型'__NSCFData'(0x7fff7b833ec0)的值转换为'NSString'(0x7fff7ac32038).
有没有办法转换CIImage为NSData而不转换CIImage为UIImage或CGImage?
我正在尝试制作相机应用程序。捕获图像时,我使用 CIImage 处理图像以对图像进行过滤效果,编辑一些元数据并通过 PHAssetCreationRequest 保存它。
在此过程中,我将 imagedata 更改为 CIImage,将 CIImage 更改为 UIImage,将 UIImage 更改为 NSData。显然这需要时间,我想节省一些时间。
那么,有没有什么办法可以
CIImage在NSData不转换CIImage为UIImageor 的情况下转换为CGImage?