标签: nsdata

我想念的是什么?:iPhone Objective-C NSInputStream initWithData

我正在从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)

我在这里错过了什么?

iphone objective-c nsinputstream nsdata

2
推荐指数
1
解决办法
6572
查看次数

将NSData转换回音频文件

我已使用以下代码行将我的.caf音频文件转换为NSData对象:

NSData *audioData = [NSData dataWithContentsOfFile:[MyRecorderFilePathURL path] options: 0 error:&err];

我这样做是为了通过Web服务将二进制对象上传到服务器.如何将audioData转换回可以使用的.caf文件AVAudioPlayer

iphone nsdata avaudioplayer avaudiorecorder

2
推荐指数
1
解决办法
5925
查看次数

将 uint8_t 转换为 NSData

我已经根据 Apple Developer 网站上提供的示例在 iOS 应用程序中实现了公钥私钥 RSA 加密。

如果我加密并返回uint8_t cipherBuffer,然后从 中解密,它会完美地工作uint8_t cipherBuffer。但是我需要将加密数据存储到.xcdata模型中NSData

我遇到的问题是在解密时可靠地将其转换uint8_t cipherBufferNSData和/或将其转换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)

bytebuffer rsa nsdata ios

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

将NSData始终保存到同一文件中

我想将每个NSData对象保存到iOS中的临时目录,我希望每个新对象都覆盖旧对象.

对象将具有不同的格式和不同的大小.

我知道你是如何得到这条路的,NSTemporaryDirectory但是NSData每次添加一个新文件时,你怎么能在那里覆盖旧文件呢?

cocoa-touch objective-c nsdata ios

2
推荐指数
1
解决办法
3574
查看次数

将大数据转换为NSData

我正在存储大小超过1 GB的视频文件并存储到homeDirectory中.我试图转换为NSData对象如下

NSData*videoData = [[NSData alloc] initWithContentsOfFile:filePath];

但在这里我得到的视频数据为零.当我尝试500 MB的视频时它工作正常.

转换为NSData时,大小是否有任何限制?

objective-c nsdata ios

2
推荐指数
1
解决办法
1116
查看次数

如何在ios中将字节数组转换为图像

今天我的任务是将字节数组转换为图像

首先,我尝试将图像转换为字节数组:-

要将 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)

bytearray uiimage nsdata ios

2
推荐指数
1
解决办法
9097
查看次数

将Swift数组转换为NSData,用于NSUserDefaults.StandardUserDefaults持久存储

我试图通过制作一个小应用程序来了解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)

arrays tuples nsdata swift

2
推荐指数
1
解决办法
8380
查看次数

如何在 Swift 中将带有十六进制数据的 NSData 对象转换为 ASCII?

我有一个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 …

string hex nsdata ios swift

2
推荐指数
1
解决办法
2705
查看次数

在Swift 3中将NSData转换为NSString?

我有一个返回某些系统值的函数.它在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).

xcode nsstring nsdata swift3

2
推荐指数
1
解决办法
8031
查看次数

有没有办法将 CIImage 转换为 NSData 而不将 CIImage 转换为 UIImage 或 CGImage?

有没有办法转换CIImageNSData而不转换CIImageUIImageCGImage

我正在尝试制作相机应用程序。捕获图像时,我使用 CIImage 处理图像以对图像进行过滤效果,编辑一些元数据并通过 PHAssetCreationRequest 保存它。

在此过程中,我将 imagedata 更改为 CIImage,将 CIImage 更改为 UIImage,将 UIImage 更改为 NSData。显然这需要时间,我想节省一些时间。

那么,有没有什么办法可以CIImageNSData不转换CIImageUIImageor 的情况下转换为CGImage

nsdata ios ciimage

2
推荐指数
1
解决办法
3297
查看次数