标签: nsdata

在目标C中将十六进制数据字符串转换为NSData(可可)

相当新的iPhone开发人员.构建一个应用程序,通过TCP/IP套接字连接向设备发送RS232命令.我已经将通信部分关闭,并且可以发送ASCII命令.这是我遇到问题的十六进制代码命令.

所以我要说我要发送以下十六进制数据(采用这种格式):

\ X1C\x02d\X00\X00\X00\XFF\0x7F部分

如何将其转换为我的send方法所期望的NSData对象?

显然这对于​​这个十六进制数据不起作用(但是对于标准的ascii命令):

NSString *commandascii;
NSData *commandToSend;
commandascii = @"\x1C\x02d\x00\x00\x00\xFF\x7F";
commandToSend = [commandascii dataUsingEncoding:NSStringEncoding];
Run Code Online (Sandbox Code Playgroud)

首先,一些\ x十六进制代码是转义字符,在XCode中编译时,我收到"输入转换已停止..."警告.并且NSStringEncoding显然不适合这个十六进制字符串.

所以第一个问题是如何存储这个十六进制字符串我猜,然后如何转换为NSData.

有任何想法吗?

iphone cocoa hex objective-c nsdata

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

Cocoa中的NSData-AES类加密/解密

我试图在我的文本编辑器中加密/解密纯文本文件.加密似乎工作正常,但解密不起作用,文本加密.我确信我已经使用加密它的单词解密了文本 - 有人可以浏览下面的片段并帮助我吗?

谢谢 :)

加密:

NSAlert *alert = [NSAlert alertWithMessageText:@"Encryption"
                                     defaultButton:@"Set"
                                   alternateButton:@"Cancel"
                                       otherButton:nil
                         informativeTextWithFormat:@"Please enter a password to encrypt your file with:"];
    [alert setIcon:[NSImage imageNamed:@"License.png"]];
    NSSecureTextField *input = [[NSSecureTextField alloc] initWithFrame:NSMakeRect(0, 0, 300, 24)];
    [alert setAccessoryView:input];
    NSInteger button = [alert runModal];
    if (button == NSAlertDefaultReturn) {
    [[NSUserDefaults standardUserDefaults] setObject:[input stringValue] forKey:@"password"];   
    NSData *data;
    [self setString:[textView textStorage]];
    NSMutableDictionary *dict = [NSDictionary dictionaryWithObject:NSPlainTextDocumentType
                                                            forKey:NSDocumentTypeDocumentAttribute];
    [textView breakUndoCoalescing];
    data = [[self string] dataFromRange:NSMakeRange(0, [[self string] length])
                     documentAttributes:dict error:outError];
    NSData*encrypt = [data AESEncryptWithPassphrase:[input stringValue]]; …
Run Code Online (Sandbox Code Playgroud)

encryption cocoa nsdata

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

在我的mainBundle中找不到.js文件?

这让我发疯,因为我无法弄清楚世界上究竟发生了什么.我一直在从主包中加载文件,xml文件,html文件等等.但是,现在我正在尝试获取javascript文件的内容,但它永远找不到它.我在用:

NSData *jsData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"global" ofType:@"js"]];
    if (jsData) {
        NSLog(@"%@", jsData);
    } else {
        NSLog(@"Can't find file");
        return;
    }
Run Code Online (Sandbox Code Playgroud)

即使检查[[NSBundle mainBundle] pathForResource:@"global"ofType:@"js"]字符串也会返回null.

我的globaly.js文件位于我的Resources文件夹中,我的其他文件所在的位置使用上述方法完全正常工作.

为什么找不到我的js文件?

iphone cocoa-touch nsdata nsbundle

10
推荐指数
2
解决办法
4771
查看次数

NSData dataWithContentsOfURL

我有这个按钮点击(下载)的方法.问题是由于异常而终止:

[Session started at 2011-03-14 13:06:45 +0530.]
2011-03-14 13:06:45.710 XML[7079:20b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '*** -[NSCFString isFileURL]: unrecognized selector sent to instance 0x62b8'
-(IBAction) download
{
    UIImage *image = [UIImage imageWithData: [NSData dataWithContentsOfURL:@"http://ws.cdyne.com/WeatherWS/Images/thunderstorms.gif"]];
    [image release];
}
Run Code Online (Sandbox Code Playgroud)

问题是什么?

iphone nsurl uiimage nsdata

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

NSData writeToFile无法正常工作

我似乎无法让nsdata写入文件.我有什么想法可能做错了.提前致谢.

NSString* filename = @"myfile.txt";

NSString *applicationDocumentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

NSString *storePath = [applicationDocumentsDir stringByAppendingPathComponent:filename];    

if ([fileManager fileExistsAtPath:applicationDocumentsDir])
    NSLog(@"applicationDocumentsDir exists");   // verifies directory exist

NSData *data = [NSData dataWithContentsOfURL:URL];

if (data) {    
     NSString *content = [[NSString alloc]  initWithBytes:[data bytes]
                                                      length:[data length] encoding: NSUTF8StringEncoding];

    NSLog(@"%@", content); // verifies data was downloaded correctly

    NSError* error;
    [data writeToFile:storePath options:NSDataWritingAtomic error:&error];

    if(error != nil)
        NSLog(@"write error %@", error);
}
Run Code Online (Sandbox Code Playgroud)

我一直在收到错误

"The operation couldn’t be completed. No such file or directory"
Run Code Online (Sandbox Code Playgroud)

nsdata ios writetofile

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

如何通过查看目标c中的标题来提取PNG的宽度和高度?

我需要在不下载图像的情况下在线查找图像的尺寸.为此,我这样做:

+ (CGSize) getImageDimensions:(NSString *)url {

   // Send a synchronous request
    NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString: url]];
    NSString *rangeString = [url hasSuffix: @"png"] ? @"bytes=0-100" : @"bytes=0-1300";
    [urlRequest setValue:rangeString forHTTPHeaderField:@"Range"];
    NSURLResponse * response = nil;
    NSError * error = nil;
    NSData * data = [NSURLConnection sendSynchronousRequest:urlRequest
                                          returningResponse:&response
                                                      error:&error];
    if (error == nil)
        return [UIImage imageWithData: data].size;
    else
        return CGSizeMake(0, 0);

}
Run Code Online (Sandbox Code Playgroud)

这(下载前100个字节)令人惊讶地工作,我通过这种方式获得了正确的PNG尺寸.

但是我不认为这是一种非常优雅的方法.首先,我选择通过猜测和检查来下载前100个字节,使其尽可能小,同时仍然可以正常工作.

显然在PNG文件中,这个东西在标题中称为IHDR,我必须在它的宽度和高度之后直接找到它.这让我觉得我应该遍历数据并找到这个IHDR并获得维度.问题是,当我NSLog数据时,我得到这样的东西:

... 49484452 000003b7 000001a7 08060000 006c2da0 b100000a 41694343 50494343 2050726f 66696c65 ...
Run Code Online (Sandbox Code Playgroud)

我不知道如何处理我的NSData对象的循环并检测IHDR令牌,然后将之后的内容转换为数字.我也不知道请求只有100个字节的PNG请求太多只是为了得到尺寸,或者它是否要求不够

binary header image-processing objective-c nsdata

10
推荐指数
1
解决办法
5799
查看次数

将Gif图像转换为NSData

我的相册里有一张gif图片.当我使用它UIImagePickerController来选择该图像时,我需要将图像转换NSData为存储.

早些时候,我用过

NSData *thumbData = UIImageJPEGRepresentation(thumbnail, 0.5);
Run Code Online (Sandbox Code Playgroud)

但它不适用于gif图像.thumbData将是零.

  1. 我如何NSData从gif图像中获取?

  2. 我怎么知道它是一个需要特殊处理的gif图像?

gif nsdata ios

10
推荐指数
2
解决办法
9427
查看次数

将任何数据类型转换为NSData,然后再返回

我正在开发一个应用程序,您可以通过Multipeer Connectivity将文本,图像或联系人发送到另一台设备.然后它将保存在第二个设备的核心数据中.

我所做的是将数据作为NSDictionary发送并再次转换回来.所以我在接收设备上留下了一个NSDictionary.那么,我可以将@"objectData"的键的对象保存到Core Data吗?

我希望它能与NSString,UIImage和ABPerson合作.

    // Create a new object in the managed object context.
    Received *receivedData = [NSEntityDescription insertNewObjectForEntityForName:@"Received" inManagedObjectContext:self.managedObjectContext];
    // Assign the properties based on what was input in the textfields.

    // Check what type it is
    NSString *dataType = [dictionary objectForKey:@"type"];
    receivedData.type =  dataType;

    // Determine what type of data was passed over...

    if ([dataType isEqualToString:@"Photo"])
    {
        receivedData.object = UIImageJPEGRepresentation([dictionary 
                                                         objectForKey:@"object"], 0.5f);

        NSLog(@"A photo saved in core data");
    }
    else  
    { 

      //receivedData.object = [NSKeyedArchiver archivedDataWithRootObject:[dictionary objectForKey:@"object"]];
      receivedData.object …
Run Code Online (Sandbox Code Playgroud)

core-data objective-c nsdata ios7 multipeer-connectivity

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

将数据写入Swift 3中的NSOutputStream

这个问题的解决方案不再适用于Swift 3.

不再有一个属性bytesData(前身NSData.

let data = dataToWrite.first!
self.outputStream.write(&data, maxLength: data.count)
Run Code Online (Sandbox Code Playgroud)

使用此代码,我收到错误:

Cannot convert value of type 'Data' to expected argument type 'UInt8'
Run Code Online (Sandbox Code Playgroud)

你怎么能写DataNSOutputStream斯威夫特3?

foundation nsdata nsoutputstream swift swift3

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

在Share Extension(Swift)中处理NSItemProvider数据类型

我在Swift(3)中遇到Share Extension编程问题. 我的主要问题是处理NSItemProvider的类型. 这是问题所在:根据我启动扩展程序的应用程序,我得到了不同类型的数据.例如: 我告诉应用程序:
data


let IMAGE_TYPE = kUTTypeImage as String
if attachment.hasItemConformingToTypeIdentifier(IMAGE_TYPE){
     attachment.loadItem(forTypeIdentifier: IMAGE_TYPE, options: nil){ data, error in
     ...
}
Run Code Online (Sandbox Code Playgroud)

(注意:附件的类型为NSItemProvider)

当从照片应用程序执行时,data是一个URL,所以我从中创建一个UIImage并继续.
问题是,对于某些应用程序data已经是UIImage,我无法找到如何区分大小写.
最好的可能是检查data对象的数据类型,但至少对我来说并不是微不足道的.
在此先感谢您的帮助!

uiimage nsdata ios swift

10
推荐指数
2
解决办法
4316
查看次数