这两个 Objective-C 语句有什么区别?
NSData *documentBytes = [NSData dataWithContentsOfFile:filePath];
Run Code Online (Sandbox Code Playgroud)
与此相比:
NSData *documentBytes = [NSData initWithContentsOfFile:filePath];
Run Code Online (Sandbox Code Playgroud)
在 Apple 的 NSData 类参考页面中,它对每个类进行了以下说明
dataWithContentsOfFile - 通过读取给定路径指定的文件中的每个字节来创建并返回数据对象。
initWithContentsOfFile - 返回一个数据对象,该数据对象通过从给定路径指定的文件中读入数据来初始化。
对我来说,这些看起来功能相同,但我非常怀疑它们在所有情况下都做同样的事情,对吗?
预先感谢...-埃尔金
有没有办法从 UIImage 获取以 KB 为单位的文件大小,而不从 didFinishPickingMediaWithInfo 获取该图像?所呈现的图像来自相册。
我尝试了以下代码,但这给出了以下结果:图像大小(KB):0.000000
- (void)setImage:(UIImage *)image
{
_image = image;
self.imageView.image = image;
}
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self setupView];
self.backgroundColor = [UIColor whiteColor];
panGestureRecognizer = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(beingDragged:)];
[self addGestureRecognizer:panGestureRecognizer];
// prepare image view
self.imageView = [[UIImageView alloc]initWithFrame:self.bounds];
self.imageView.clipsToBounds = YES;
self.imageView.contentMode = UIViewContentModeScaleAspectFill;
[self addSubview:self.imageView];
NSData *imgData = [[NSData alloc] initWithData:UIImageJPEGRepresentation((_image), 0.5)];
int imageSize = imgData.length;
NSLog(@"size of image in KB: %f ", imageSize/1024.0);
overlayView = …Run Code Online (Sandbox Code Playgroud) 我有一个包含大量信息的自定义类。这是一个位置跟踪应用程序,所以我稍后需要位置(基本上只有 x、y、z,但为了方便我使用 CLLocations)。现在我有一个自定义类,其中包含有关每个跟踪的所有信息,例如记录/保存文件)。我使用 Realm 来保存它,Realm 可以很好地处理我的双打和字符串,但是我在处理数据数组时遇到了麻烦。
我能找到的最方便的解决方案是将数据转换为 NSData。在谷歌的帮助下,我找到了两种编码和解码的方法。但我没有这方面的经验,所以我不确定它是否有效。而且我不认为它有效。
我可以很好地加载双打和字符串,但我的 NSData 似乎是空的。我试图将我的类编码为 NSData 并将其保存在 Realm 中,但这似乎不起作用,因此我的理论是编码/解码功能无法正常工作。
TL;DR 我有我的自定义类(数据记录),我想用 Realm 保存。我如何解决这个问题?
我的课:
class DataRecord {
var startLocation : CLLocation = CLLocation.init()
var endLocation : CLLocation = CLLocation.init()
var duration : Double = 0.0
var distance: Double = 0.0
var avgSpeed : Double = 0.0
var topSpeed : Double = 0.0
var locations : [CLLocation] = []
var altitudes : [Double] = []
var angles : [Double] = []
var speeds : [Double] …Run Code Online (Sandbox Code Playgroud) 我在iPhone应用程序中使用Google Docs API.我发送了正确的POST请求,并收到了一些响应以及一些NSData.如果我NSLog NSData对象,我得到这个:
NSData *returnedData = [NSURLConnection sendSynchronousRequest:request returningResponse:theResponse error:NULL];
NSLog(@"%@",returnedData);
//output : <4572726f 723d4261 64417574 68656e74 69636174 696f6e0a>
Run Code Online (Sandbox Code Playgroud)
我认为NSData是NSDictionary或NSArray.我应该收到几件物品,一个SID,一个LSID和一个Auth.
如果我可以将NSData块转换为NSDictionary,我可以找到任何键的对象.
有人可以帮忙吗?
我有一个理解问题.给出了这种方法:
- (NSArray*)test {
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://stackoverflow.com/"]];
NSString *result = [[NSString alloc] initWithBytes:[data bytes]
length:[data length]
encoding:NSMacOSRomanStringEncoding];
result = [result stringByAppendingString:@"something"];
NSArray *arr = [NSArray arrayWithObject:result];
//[result release];
return arr;
}
Run Code Online (Sandbox Code Playgroud)
如果我取消注释,releaseApp会崩溃并说它无法访问已发布的对象.
不release通过result字符串仪器会报告泄漏(NSPlaceholderString).
我可以autorelease在同一条线上alloc,它可以解决问题(我正在我的应用程序中进行).
如果我理解正确stringByAppendingString:应该创建一个自动释放的对象,以便可以释放"旧"结果.然后该方法arrayWithObject:应该copy将对象放入数组中.所以我的想法是在将字符串复制到数组后释放它.
我错过了我的知识吗?
在我的应用程序中,我在设置菜单中有一个"全部删除"按钮,删除所有存储的用户数据.使用以下代码:
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Event" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSError *error;
NSArray *items = [managedObjectContext executeFetchRequest:fetchRequest error:&error];
[fetchRequest release];
for (NSManagedObject *managedObject in items) {
[managedObjectContext deleteObject:managedObject];
}
Run Code Online (Sandbox Code Playgroud)
这似乎运作良好,所有数据似乎从应用程序中消失.也就是说,直到应用程序关闭并重新启动...
从背景状态打开应用程序不会执行此操作,但是当应用程序通过多任务切换器强制退出时,重新启动应用程序时会重新显示所有"已删除"数据.
-
删除后,所有数据实际上似乎都消失了,搜索任何数据等都不会返回任何结果.我在删除数据的方式上做错了什么?任何帮助深表感谢!
我想使用zlib,因为我认为它是gzip的最佳和最快的方式NSData.但是,有更好的方法吗?
如果没有,我应该在Xcode中链接哪个版本的zlib库:libz.dylib,libz.1.dylib,libz.1.1.3.dylib或libz.1.2.5.dylib?
请提供一个代码示例,说明如何将zlib转换NSData *normalHTTPBody为NSData gzippedHTTPBody
我从iPhone设备上检索了所有音乐和视频.我现在被困在保存到我的应用程序中,我无法从文件中获取原始数据.任何人都可以帮我找到解决方案.这是我用来获取音乐文件的代码.
MPMediaQuery *deviceiPod = [[MPMediaQuery alloc] init];
NSArray *itemsFromGenericQuery = [deviceiPod items];
for (MPMediaItem *media in itemsFromGenericQuery){
//i get the media item here.
}
Run Code Online (Sandbox Code Playgroud)
如何将其转换为NSData?这就是我试图获取数据的原因
audioURL = [media valueForProperty:MPMediaItemPropertyAssetURL];//here i get the asset url
NSData *soundData = [NSData dataWithContentsOfURL:audioURL];
Run Code Online (Sandbox Code Playgroud)
使用它对我来说毫无用处.我得到了来自的数据LocalAssestURL.任何解决方案.提前致谢
我通过Bonjour协议来回发送数据.所有数据包都作为NSData字符串发送并通常转换为字符串; 但是如果我需要收到图片怎么办?这是将要进行的过程.
NSImageNSImage作为NSData数据包发送NSData我可以尝试将数据转换为图像并捕获错误(这意味着它不是图像)吗?
我UIImage想要制作一个长的多页PDF文件,每页只有一个图像.我已经把每个图像都放到了由NSData表示的PDF中,但是我很难找到关于如何将它们组合成一个长文档的任何信息.
我当前的代码如下所示:
//Convert images to pdf
var pdfDatas = [NSData]()
for image in images {
let pdfData = NSData.convertImageToPDF(image)
pdfDatas.append(pdfData!)
}
//Combine PDF's to one long document here.
Run Code Online (Sandbox Code Playgroud)
有谁知道如何实现这一目标?