相当新的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.
有任何想法吗?
我试图在我的文本编辑器中加密/解密纯文本文件.加密似乎工作正常,但解密不起作用,文本加密.我确信我已经使用加密它的单词解密了文本 - 有人可以浏览下面的片段并帮助我吗?
谢谢 :)
加密:
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) 这让我发疯,因为我无法弄清楚世界上究竟发生了什么.我一直在从主包中加载文件,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文件?
我有这个按钮点击(下载)的方法.问题是由于异常而终止:
[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)
问题是什么?
我似乎无法让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) 我需要在不下载图像的情况下在线查找图像的尺寸.为此,我这样做:
+ (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请求太多只是为了得到尺寸,或者它是否要求不够
我的相册里有一张gif图片.当我使用它UIImagePickerController来选择该图像时,我需要将图像转换NSData为存储.
早些时候,我用过
NSData *thumbData = UIImageJPEGRepresentation(thumbnail, 0.5);
Run Code Online (Sandbox Code Playgroud)
但它不适用于gif图像.thumbData将是零.
我如何NSData从gif图像中获取?
我怎么知道它是一个需要特殊处理的gif图像?
我正在开发一个应用程序,您可以通过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) 这个问题的解决方案不再适用于Swift 3.
不再有一个属性bytes的Data(前身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)
你怎么能写Data一NSOutputStream斯威夫特3?
我在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对象的数据类型,但至少对我来说并不是微不足道的.
在此先感谢您的帮助!
nsdata ×10
ios ×3
iphone ×3
objective-c ×3
cocoa ×2
swift ×2
uiimage ×2
binary ×1
cocoa-touch ×1
core-data ×1
encryption ×1
foundation ×1
gif ×1
header ×1
hex ×1
ios7 ×1
nsbundle ×1
nsurl ×1
swift3 ×1
writetofile ×1