标签: nsdata

相机图像方向

在我的应用程序中,我正在使用相机捕获图像.它们作为NSData表示存储在NSArray中.当我将NSData转换回图像时,当我拍摄时,方向现在是横向而不是纵向.

    NSData *data = UIImagePNGRepresentation([arrayImage objectAtIndex:0]);
    UIImage *tmp = [UIImage imageWithData:data];
Run Code Online (Sandbox Code Playgroud)

有人有解释吗?谢谢.

uiimage nsdata ios

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

Java的NSData类型?

我很想知道是否有类似Java上的Cocoa NSData类.我环顾四周,但找不到任何东西.我想创建一个文件共享客户端服务器应用程序.

java client-server file-sharing nsdata

5
推荐指数
1
解决办法
7015
查看次数

如何将NSData加载到AVPlayerItem?

这是我关于如何在iOS中加密mp3文件的帖子中的后续问题.

我如何使用NSData而不是文件路径/ URL将轨道加载到AVPlayerItem?

谢谢

cocoa-touch objective-c nsdata ios avplayer

5
推荐指数
1
解决办法
6333
查看次数

5
推荐指数
1
解决办法
1706
查看次数

在NSString中解码Base-64编码的PNG

我有一些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)

我到处寻找,无法弄清楚做什么是正确的.

base64 cocoa-touch nsdata ios

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

将NSString转换为NSDictionary,将NSDictionary转换为NSString

关于这个问题已有很多问题,但所给出的答案都是针对特定情况的,回答了海报的个人问题,而​​不是问题标题.

我想知道是否有一种通用的,通用的,简单的方法将a转换NSString为a NSDictionary,反之亦然?

我有困难/复杂/非跨平台的方法,但肯定有一个更简单的方法吗?

这是我所知道/经过测试的:

  1. Apple提供了一个没有反转的Dictionary- > String方法,只要你的Dictionary只是基本数据类型,数组和字典,它就能完美运行.这涵盖了大多数现实世界的案例,但Apple没有反过来:(.
    1. [myDictionary description];
    2. // 无路可退 ?为什么不?
  2. Apple使用的中间方法NSData无声地失败,因此它仅适用于一组有限的实际情况:
    1. [myString dataUsingEncoding:NSUTF8StringEncoding];
    2. [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding]; // NB:在许多情况下默默地失败,返回nil字符串
  3. Apple有多种,不兼容的转换方式NSDictionary- > NSData- >运行NSDicitonary良好 - 但它们正在使用NSData,因此它们不是直接转换,而且它们更难以使用
    1. KeyedArchiver:
      1. [NSKeyedArchiver archivedDataWithRootObject:myDictionary];
      2. [NSKeyedUnarchiver unarchiveObjectWithData:myData];
    2. PropertyListSerialization:
      1. [NSPropertyListSerialization dataFromPropertyList:plist format:NSPropertyListXMLFormat_v1_0 errorDescription:&error];
      2. [NSPropertyListSerialization propertyListFromData:plistData mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&error];
    3. NSJSONSerialization:
      1. [NSJSONSerialization JSONObjectWithData:myData options:0 error:nil];
      2. [dataWithJSONObject:myDictionary options:0 error:nil];

目前,唯一可以保证工作的路线似乎是:

编写大量的代码输出冗长XML或者JSON,将其转换为NSData,然后转换NSString,并发送上线.

其他任何东西的成功率都略低于100%.不幸的是,这种技术将一个非常常见的问题(字符串 - …

nsdictionary nsstring nsdata ios

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

swift处理NSData初始化失败

我有以下几行:

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初始化返回类型识别为可选吗?

initialization nsdata swift xcode6

5
推荐指数
1
解决办法
2746
查看次数

如何使用Facebook iOS SDK 4.0 FBSDKShareDialog分享NSData或phasset视频

我注意到你可以简单地将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视频进行类似的不错的应用切换行为?

谢谢!

video facebook nsdata ios

5
推荐指数
1
解决办法
4578
查看次数

如何将从CGImageRef创建的UIImage对象转换为原始数据并再次返回

假设你从一个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)

objective-c uiimage nsdata ios cgimageref

5
推荐指数
1
解决办法
780
查看次数

如何在swift中附加两个NSData变量?

我想追加两个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 ios swift

5
推荐指数
1
解决办法
3700
查看次数