快速计算大文件的MD5校验和

我正在为大型video文件创buildMD5校验和。 我目前正在使用的代码: extension NSData { func MD5() -> NSString { let digestLength = Int(CC_MD5_DIGEST_LENGTH) let md5Buffer = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: digestLength) CC_MD5(bytes, CC_LONG(length), md5Buffer) let output = NSMutableString(capacity: Int(CC_MD5_DIGEST_LENGTH * 2)) for i in 0..<digestLength { output.appendFormat("%02x", md5Buffer[i]) } return NSString(format: output) } } 但是这会创build一个内存缓冲区,而对于大型video文件来说并不理想。 有什么方法在Swift中计算读取文件stream的MD5校验和,所以内存占用将是最小的?

检测摇摆手势IOS Swift

我正在开发一个手势系统的应用程序,基本上,如果我把iPhone左转,我的应用程序将做一个function,如果我把iPhone的权利,其他function,与其他手势。 我不知道如何处理,我试图search谷歌,但不工作,结果是只有触摸手势,而不是运动手势。 有人有一个教程来帮助我?

Google地图SDK:在Google地图中以设备在后台移动时绘制正确的折线

我正在使用Google Map SDK for iOS。 我正在驾驶模式中绘制多段线。 但是,当我停下来,然后缩放谷歌地图,我的当前位置光标自动移动和重绘之字形多段线,由于所有以前的多段线绘制得到重叠和多段线得到完全改变。当我去后台和驱动器时发生的事情。 我能知道为什么会发生? 而我怎样才能在相同的path上同时在驾驶和行走模式中绘制平滑的多段线。 我的代码 – – (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { pointString=[NSString stringWithFormat:@"%f,%f",newLocation.coordinate.latitude,newLocation.coordinate.longitude]; CLLocationDistance kilometers = [newLocation distanceFromLocation:oldLocation] / 1000; NSLog(@"Distance Travelled in Kilometer :%f",kilometers); [self.points addObject:pointString]; GMSMutablePath *path = [GMSMutablePath path]; for (int i=0; i<self.points.count; i++) { NSArray *latlongArray = [[self.points objectAtIndex:i]componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@","]]; [path addLatitude:[[latlongArray objectAtIndex:0] […]

重大的位置变化不会在设备上触发

我正在使用重要的位置更改监控。 当我在模拟器中运行代码并检查Freeway选项时,我会定期更新位置。 我抓住这些更新,并将其保存在NSUserDefaults,并比每10秒更新tableview,所以我可以看到,如果我有任何更新。 如果我在真实的设备上运行应用程序,我得到零更新。 我把电话放在口袋里,走了80多公里,在两个城市。 零更新。 不知道我是否搞砸了。 我附上了代码。 代码是复制粘贴,随时testing。 只要确保在故事板中使用TableViewController并将单元ID设置为ID即可。 我错过了什么? 我正在testingiPhone 5。 info.plist中: 编辑:在苹果文档中find这个。 我的locationManager应该创build不同? 当由于位置更新而重新启动应用程序时,将启动选项字典传递给您的应用程序:willFinishLaunchingWithOptions:或application:didFinishLaunchingWithOptions:方法包含UIApplicationLaunchOptionsLocationKey项。 该键的存在表示新的位置数据正在等待传送到您的应用程序。 要获取这些数据,您必须创build一个新的CLLocationManager对象,并重新启动您的应用程序终止之前运行的位置服务。 当您重新启动这些服务时,位置pipe理器会将所有待处理的位置更新传递给其代理。 EDIT2: 基于此,位置应至less每15分钟更新一次。 我的代码中的错误确认。 如果GPS级精度对您的应用程序不是至关重要的,并且您不需要连续跟踪,则可以使用重大更改位置服务。 正确使用重大更改位置服务至关重要,因为它至less每隔15分钟就会唤醒系统和应用程序,即使没有发生位置更改,也会持续运行,直到您停止。 edit3:将此代码添加到AppDelegate didFinishLaunchingWithOptions:查看应用程序是否被唤醒。 它不会被唤醒 – 我在表格视图中看不到200 200条目。 有什么可疑的事情正在发生。 if let options = launchOptions { print("options") if (launchOptions![UIApplicationLaunchOptionsLocationKey] != nil){ locationManager.startUpdatingLocation() self.lat.append(Double(200)) self.lon.append(Double(200)) self.times.append(NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .NoStyle, timeStyle: .ShortStyle)) NSUserDefaults.standardUserDefaults().setObject(lat, forKey: "lat") NSUserDefaults.standardUserDefaults().setObject(lon, […]

当删除button显示时调整UITableViewCell内容的大小

有没有办法使用自动调整掩码来移动我的内容,使删除button不覆盖它? 谷歌search告诉我,我需要在我的子视图上设置UIViewAutoresizingFlexibleRightMargin的UIViewAutoresizingFlexibleRightMargin确定的面具。 在我看来,像UIViewAutoresizingFlexibleWidth实际上会更有意义; 尽pipe我已经尝试过了,但都没有成功。 我想缩小的视图只是一个标签,是单元格的contentView的子视图。 我不确定contentView本身是否会在删除button显示时自动resize; 但似乎不是; 否则我的autoresizing面具应该已经工作。 如果存在删除button不会导致任何视图的大小; 无论如何,我可以手动做到这一点?

如何从同一个故事板访问Objective-C和Swift类?

我已经在Swift中实现了一个UIButton派生类(RoundButton),其余的仍然在Objective-C中。 如何在同一个故事板中访问基于Objective-C的类和基于Swift的类? 您可以在Storyboard中的UIButton Custom Class – Class字段中键入RoundButton ,但iOS会提供以下警告运行时: Unknown class RoundButton in Interface Builder file.

unit testingparsing框架iOS

我正在尝试为使用Parse后端框架的iOS应用程序编写unit testing,而且在编写成功的unit testing之后,大量的实验似乎都失败了。 我在testingasynchronous代码( 在iOS中testingunit testing中的asynchronous调用 )和testingnetworking调用方面发现了一些post,但是还没有find用asynchronouscallbacktesting对Parse后端调用的方法。 举个例子,任何人都可以build议我如何testing下面这行代码: [PFUser saveUser:userModelMock withBlock:^(BOOL success, NSError *error) { }]; 我正在使用OCMock和XCTest框架。 任何帮助将非常感激。 *编辑*这是我迄今为止,但似乎失败 – (void)testSaveUser { id userModelMock = [OCMockObject niceMockForClass:[UserModel class]]; id userControllerMock = [OCMockObject niceMockForClass:[self.userController class]]; [[userModelMock expect] saveInBackgroundWithBlock:[OCMArg any]]; [[userControllerMock stub] saveUser:userModelMock withBlock:[OCMArg any]]; [userModelMock verify]; }

应用已获批准,但未显示AdMob广告

我的iOS应用程序被拒绝,因为Apple在审查过程中没有find我的广告。 我再次上​​传我的应用程序,包括如何看广告的指示,并在今天被批准。 现在,一旦我的朋友和家人下载了应用程序,就不会有广告出现。 我查看了我的AdMob帐户,没有任何展示,所以我不知道什么是错的。 有没有人发生过这种事? 此外,自从该应用程序获得批准以来,还没有过了24个小时。 由于苹果认可它,我假设他们已经看到了广告。 select照片后, 我的应用程序会在您开始使用滤镜时显示广告。 AdMob显示61次展示,61次请求和100%填充率。 // Initialize Apple iAd banner func initiAdBanner() { iAdBannerView = ADBannerView(frame: CGRectMake(0, self.view.frame.size.height, 0, 0) ) iAdBannerView.delegate = self iAdBannerView.hidden = true view.addSubview(iAdBannerView) } // Initialize Google AdMob banner func initAdMobBanner() { if UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Pad { // iPad banner adMobBannerView.adSize = GADAdSizeFromCGSize(CGSizeMake(728, 90)) adMobBannerView.frame […]

有什么方法可以在代码中“等待……” – 就像空循环一样?

考虑这个代码: [self otherStuff]; // "wait here…" until something finishes while(!self.someFlag){} [self moreStuff]; 请注意,这一切都发生在同一线程 – 我们不想去另一个线程。 otherStuff可以做的事情就像连接到云,从用户获得input等,所以这将需要很多时间,可以遵循许多可能的path。 otherStuff会在otherStuff最终完成时将self.someFlag设置为true。 这是完美的工作,没有任何问题,除了这是一个蹩脚的燃烧处理器像这样的空循环! 很简单,有没有办法说一些像.. halt here, until (some message, interrupt, flag, boolean, whatever?) 而不只是while(!self.someFlag){} (注意,另一种方法是“链接”程序…所以在“otherStuff”的结尾,你和其他所有程序员必须“知道”你不得不下一次调用“moreStuff”当然,当你必须添加新的程序或改变事物的顺序时,这是非常混乱的)干杯! 顺便说一句,关于当你想要不同的线程的情况已经有两个很好的答案。

通过NSString将文本写入PDF

我对iOS开发相当陌生,而且这个正在杀死我。 我还没有find一个完整的(简单的)如何在iPhone上写文本的例子。 关于这个主题的苹果文档是代码片段,并且很难遵循(对于我来说),并且下载了Quartz演示程序,我发现它所做的只是显示已经存在的pdf。 简单地说,我现在拥有世界上最简单的基于视图的应用程序。 该视图中有一个button。 当button被按下时,构build一个包含数字1到15的NSString。我可以写一个文本文件到包含NSString内容的设备,但是更喜欢它是pdf。 底线是,我想从NSStringbuild立一个PDF文件,最终通过电子邮件附件。 如果任何人可以指向我有一个完整的项目,写一个PDF文本的地方,我一定会很感激。