在我的应用程序中,我正在使用相机捕获图像.它们作为NSData表示存储在NSArray中.当我将NSData转换回图像时,当我拍摄时,方向现在是横向而不是纵向.
NSData *data = UIImagePNGRepresentation([arrayImage objectAtIndex:0]);
UIImage *tmp = [UIImage imageWithData:data];
Run Code Online (Sandbox Code Playgroud)
有人有解释吗?谢谢.
我很想知道是否有类似Java上的Cocoa NSData类.我环顾四周,但找不到任何东西.我想创建一个文件共享客户端服务器应用程序.
我有一些NSDataBase-64编码,我想解码它,我看到一个看起来像这样的例子
NSData* myPNGData = [xmlString dataUsingEncoding:NSUTF8StringEncoding];
[Base64 initialize];
NSData *data = [Base64 decode:img];
cell.image.image = [UIImage imageWithData:myPNGData];
Run Code Online (Sandbox Code Playgroud)
然而,这给了我一大堆错误,我想知道该怎么做才能使这个工作.我需要将某些类型的文件导入到我的项目中,还是必须包含一个框架?
这些是我得到的错误
Use of undeclared identifier 'Base64'
Use of undeclared identifier 'Base64'
Use of undeclared identifier 'cell'
Run Code Online (Sandbox Code Playgroud)
我到处寻找,无法弄清楚做什么是正确的.
关于这个问题已有很多问题,但所给出的答案都是针对特定情况的,回答了海报的个人问题,而不是问题标题.
我想知道是否有一种通用的,通用的,简单的方法将a转换NSString为a NSDictionary,反之亦然?
我有困难/复杂/非跨平台的方法,但肯定有一个更简单的方法吗?
这是我所知道/经过测试的:
Dictionary- > String方法,只要你的Dictionary只是基本数据类型,数组和字典,它就能完美运行.这涵盖了大多数现实世界的案例,但Apple没有反过来:(.
[myDictionary description];NSData无声地失败,因此它仅适用于一组有限的实际情况:
[myString dataUsingEncoding:NSUTF8StringEncoding];[[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding]; // NB:在许多情况下默默地失败,返回nil字符串NSDictionary- > NSData- >运行NSDicitonary良好 - 但它们正在使用NSData,因此它们不是直接转换,而且它们更难以使用
[NSKeyedArchiver archivedDataWithRootObject:myDictionary];[NSKeyedUnarchiver unarchiveObjectWithData:myData];[NSPropertyListSerialization dataFromPropertyList:plist format:NSPropertyListXMLFormat_v1_0 errorDescription:&error];[NSPropertyListSerialization propertyListFromData:plistData mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&error];[NSJSONSerialization JSONObjectWithData:myData options:0 error:nil];[dataWithJSONObject:myDictionary options:0 error:nil];目前,唯一可以保证工作的路线似乎是:
编写大量的代码输出冗长XML或者JSON,将其转换为NSData,然后转换回成NSString,并发送上线.
其他任何东西的成功率都略低于100%.不幸的是,这种技术将一个非常常见的问题(字符串 - …
我有以下几行:
let jsonResults = NSData(contentsOfURL: Fetcher.URLforLicenseInfo())
Run Code Online (Sandbox Code Playgroud)
这编译并执行正常,但如果NSData的初始化失败,我会在代码中稍后获得异常.我试图添加另一行:
if jsonResults != nil { ///blah, blah...
Run Code Online (Sandbox Code Playgroud)
但随后编译器抱怨 "Cannot invoke '!=' with an argument list type '(NSData, NilLiteralConvertible)"
编译器不应该将NSData初始化返回类型识别为可选吗?
我注意到你可以简单地将NSData视频分享给facebook messenger:
NSData *videoData = [NSData dataWithContentsOfURL:localVideoUrl];
[FBSDKMessengerSharer shareVideo:videoData withOptions:options];
Run Code Online (Sandbox Code Playgroud)
但是当我使用本地视频文件或phasset分享到Facebook Feed时,我遇到了同样的困难.
FBSDKShareVideo *video = [FBSDKShareVideo videoWithVideoURL:localVideoUrl];
FBSDKShareVideoContent *content = [[FBSDKShareVideoContent alloc] init];
[content setVideo: video];
[FBSDKShareDialog showFromViewController:nil withContent:content delegate:self];
Run Code Online (Sandbox Code Playgroud)
com.facebook.sdk:FBSDKErrorDeveloperMessageKey =原生对话框只允许使用资产文件URL
我如何使用phasset视频进行类似的不错的应用切换行为?
谢谢!
假设你从一个UIImage开始,你想要裁剪它.最常见的方法是使用CGImageCreateWithImageInRect来获取CGImageRef并从中创建一个新图像,如下所示:
CGRect cropRect = CGRectMake(x*width, y*height, width, height);
CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], cropRect);
UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
Run Code Online (Sandbox Code Playgroud)
现在让我们说你以后需要将这个UIImage转换为NSData对象.例如,如果您希望使用NSKeyedArchiver将映像存储在磁盘上,则会发生这种情况.或者,您可以通过以下显式执行以下操作来获取NSData对象:
NSData *imageData = UIImagePNGRepresentation(croppedImage);
Run Code Online (Sandbox Code Playgroud)
我做了这个,后来我尝试通过以下方式重建一个新的UIImage对象:
UIImage *image = [UIImage imageWithData:imageData];
Run Code Online (Sandbox Code Playgroud)
我为一系列48张图片做了这个.他们中的大多数都很好,但是在每4张图片之后,接下来的两张图片都被破坏了,每张图片的顶部和底部都被交换了.如果我将转换转换为NSData并再次返回,它可以正常工作.如果我使用NSKeyedArchiver将图像数组写入磁盘(我猜它在其编码例程中调用类似UIImagePNGRepresentation的东西),我也会得到完全相同的问题.我的理论是这必须与我如何从CGImageRefs构建图像有关.
这是什么解决方法?我似乎无法弄清楚如何将CGImageRefs放入NSData对象,我更喜欢一个正确构建UIImage的解决方案,以便它可以被序列化.
编辑:
有些人要求运行实际的代码,所以我在这里添加它
UIImage *image = self.animationObject.image;
for (int y=0; y<[self.animationInfoObject.numInY intValue]; y++) {
for (int x=0; x<[self.animationInfoObject.numInX intValue]; x++) {
CGRect cropRect = CGRectMake(x*width, y*height, width, height);
CGImageRef imageRef = CGImageCreateWithImageInRect([image CGImage], cropRect);
UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
NSData *imageData = UIImageJPEGRepresentation(croppedImage, 1.0);
[self addImageToArray:imageData];
CFRelease(imageRef);
}
} …Run Code Online (Sandbox Code Playgroud) 我想追加两个NSData:
var actionIdData :NSData = NSData(bytes: &actionId, length: 2)
var payLoad : NSData = NSData(bytes: &message, length: 9)
var messageData : NSMutableData!
messageData.appendData(actionIdData)
messageData.appendData(actionIdData)
Run Code Online (Sandbox Code Playgroud)
致命错误:在展开Optional值时意外发现nil
nsdata ×10
ios ×7
cocoa-touch ×2
objective-c ×2
swift ×2
uiimage ×2
avplayer ×1
base64 ×1
cgimageref ×1
facebook ×1
file-sharing ×1
java ×1
nsdictionary ×1
nsstring ×1
video ×1
xcode6 ×1