在基础框架中的内置NSData类上调用哈希时 - 用于返回哈希值的实现是什么?(CRC32,还有什么?)
一直在争夺这一个.基本上,我正在将图像转换为NSData,因此我可以将其发送到服务器.我之前使用过的代码,但由于某种原因,我在此处收到ARC错误.错误落在我声明imageData变量的行上.
注意:myImage将传递给该方法.
- (void)uploadImage:(NSImage *)myImage {
NSData *imageData = UIImageJPEGRepresentation(myImage, 1.0);
// Do something...
}
Run Code Online (Sandbox Code Playgroud)
我收到错误和两个警告
Error: Implicit conversion of 'int' to 'NSData *' is disallowed with ARC
Warning: Implicit declaration of function 'UIImageJPEGRepresentation' is invalid in C99
Warning: Incompatible integer to pointer conversion intializing 'NSData * __strong' with an expression of type 'int'
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我是GKTurnBasedMatch的新手,我正在试图找出在转弯期间玩家之间发送的"matchData"的良好做法.我发现的所有教程主要包括发送一串文本,我想发送更多.如果有人能给我一个更高级的教程,那就太好了.
我想做的一个例子就是战斗.这两个玩家有他们的化身,他们有不同的细节(健康,攻击,防御等),我该如何发送这些数据?我认为可能的唯一方法是将所有匹配细节(很多)编成NSDictionary并发送,以便它们可以再次放回到自定义匹配对象中.我应该实施NSCoding吗?
谢谢!
我的程序的一部分读取目录,然后计算文件夹中每个文件的哈希值.每个文件加载到内存,我不知道如何释放它.我在这里阅读了很多主题,但找不到正确的答案.有人可以帮忙吗?
#import "MD5.h"
...
NSFileManager * fileMan = [[NSFileManager alloc] init];
NSArray * files = [fileMan subpathsOfDirectoryAtPath:fullPath error:nil];
if (files)
{
for(int index=0;index<files.count;index++)
{
NSString * file = [files objectAtIndex:index];
NSString * fullFileName = [fullPath stringByAppendingString:file];
if( [[file pathExtension] compare: @"JPG"] == NSOrderedSame )
{
NSData * nsData = [NSData dataWithContentsOfFile:fullFileName];
if (nsData)
{
[names addObject:[NSString stringWithString:[nsData MD5]]];
NSLog(@"%@", [nsData MD5]);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
和MD5.m
#import <CommonCrypto/CommonDigest.h>
@implementation NSData(MD5)
- (NSString*)MD5
{
// Create byte array of unsigned chars …Run Code Online (Sandbox Code Playgroud) 我有.Net Web服务响应包含byte []条目,以及其他字段.数据是PDF文件.
我从接收到的数据中提取字典:[NSJSONSerialization JSONObjectWithData]
此后我使用以下代码将byte []转换为NSData.然后我将结果保存到磁盘(参见最后一行).
打开生成的PDF文件时,出现以下错误:
"未找到PDF标题:'%PDF'未找到."
NSArray *byteArray = [rootDictionary objectForKey:@"file"];
unsigned c = byteArray.count;
uint8_t *bytes = malloc(sizeof(*bytes) * c);
unsigned i;
for (i = 0; i < c; i++)
{
NSString *str = [byteArray objectAtIndex:i];
int byte = [str intValue];
bytes[i] = (uint8_t)byte;
}
NSData* data = [NSData dataWithBytes:(const void *)byteArray length:sizeof(unsigned char)*c];
//Save to disk using svc class.
NSString *localPath = [svc saveReport:data ToFile:[rootDictionary objectForKey:@"name"]];
Run Code Online (Sandbox Code Playgroud)
我也尝试将byte []转换为base64 NSString(在服务端),然后返回到我的应用程序中的NSData,其工作(大多数情况下),但我被告知它是邋code的代码.
**当同时异步提取多个PDF时,其中一些作为base64字符串收到的报告也已损坏.
PS.如果我必须提供我的svc课程的代码,请告诉我,但我不认为问题存在.
编辑: 我创建了一个新的Web服务方法,它以byte []作为输入,然后修改我的iOS应用程序将byteArray变量发送回服务,然后将其保存到文件中.生成的PDF文件是Adobe可读的有效文件.这意味着转移期间没有腐败.
谢谢!
我试图从NSData包含几个十六进制值的对象获取浮点值.例如EC 51 38 41从这4个字节值我想得到浮点值11.52.我如何在xcode中执行此操作?
我已经尝试过NSScanner(scanFloat,scanHexFloat),NSNumberformatter并且NSNumber我创建了一个字节数组并尝试过float myFloat = *(float*)&myByteArray.我在stackoverflow找到了所有这些选项.
我在Windows中使用C#进行了测试,并且没有问题:
byte[] bytes = new byte[4] { 0xEC, 0x51, 0x38, 0x41 };
float myFloat = System.BitConverter.ToSingle(bytes, 0);
Run Code Online (Sandbox Code Playgroud)
有谁知道我在xcode中如何做到这一点???
谢谢,本杰明
我正在尝试从我的数据库中显示图像.
这部分很好用.我将图像保存在DB中,如下所示:
UIImage *resizedImg = [Generics scaleImage:self.photo.image toResolution:self.photo.frame.size.width and:self.photo.frame.size.height];
NSData *imgData = UIImageJPEGRepresentation(resizedImg, 0.9);
NSString *stringDataImage = [NSString stringWithFormat:@"%@",imgData];
[dict setObject:stringDataImage for key@"image"];
// POST Request to save the image in DB ...
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试加载图像并将其设置为我时,UIImageView我这样做:
NSData *data = [[[MyUser sharedUser] picture] dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO];
self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageWithData:data]];
Run Code Online (Sandbox Code Playgroud)
要么
NSData *data = [[[MyUser sharedUser] picture] dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO];
self.imageView.image = [UIImage withData:data];
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
data不等于imgData,我认为这是编码,但我可以找到好的编码.并[UIImage withData:data]返回零;
你能帮助我吗?
编辑:
转换并保存
UIImage *resizedImg = [Generics scaleImage:self.photo.image toResolution:self.photo.frame.size.width …Run Code Online (Sandbox Code Playgroud) 我开发了一个OS X应用程序,有时我需要将一些图片保存到磁盘上.我有一个方法来做到这一点:
func saveImageAtPath(image: NSImage, path: String)
{
if let data = image.TIFFRepresentation
{
let bitmap = NSBitmapImageRep(data: data)
let pngImage = bitmap?.representationUsingType(NSBitmapImageFileType.NSPNGFileType, properties: [:])
NSLog("Path : %@", path)
if let _ = pngImage?.writeToFile(path, atomically: false)
{
NSLog("Everything should work...")
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试保存图像时,一切似乎都有效,控制台中会显示以下文本:
路径:/Users/myusername/Documents/Pictures/Apps/testPictures/mypicture.png
一切都应该工作......
一个月前一切都很完美.这是我的conf:
OS X Yosemite 10.10.5 Xcode 7.2
如果有人有想法......那太棒了!
提前致谢.
如何在iOS Swift 3中将字符串转换为数据或NSData 32字节数.
我有一个这样的键:
let keyString = "hpXa6pTJOWDAClC/J6POVTjvJpMIiPAMQiTMjBrcOGw="
Run Code Online (Sandbox Code Playgroud)
并测试此代码以转换为数据:
let keyData: Data = keyString.data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue))!
let keyLength = keyData.count //44
Run Code Online (Sandbox Code Playgroud)
密钥长度为44.
我需要转换为32,因为有效的密钥字节数应该等于:16或24或32基于这种情况:
let validKeyLengths = [kCCKeySizeAES128, kCCKeySizeAES192, kCCKeySizeAES256]
Run Code Online (Sandbox Code Playgroud) 我用了
`NSURL *urlA = [info valueForKey:@"PHImageFileURLKey"];`
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用URL保存图像时,URL为零.
`NSData *pngData =[NSData dataWithContentsOfURL:urlA options:NSDataReadingMapped error:nil];`
Run Code Online (Sandbox Code Playgroud) nsdata ×10
ios ×5
objective-c ×4
swift ×2
aes ×1
bytearray ×1
encode ×1
foundation ×1
game-center ×1
gamekit ×1
ipad ×1
json ×1
macos ×1
nscoding ×1
osx-yosemite ×1
pdf ×1
uiimage ×1
uiimageview ×1
writetofile ×1