Parse.com错误“启用固定时不允许使用方法”。 当我使用PFQueryTableViewController子类

我目前正在使用1.6.1通过CocoaPods(=最新)

在我的swift项目中,我启用localdatastore,然后设置parsing应用程序ID。 之后,我加载了一个PFQueryTableViewController子类的故事板。 真的没有什么特别的。 但它仍然崩溃。 它似乎崩溃内部Parse [PFQuery setCachePolicy:]

什么可能是错的? 如何使离线function正常工作?

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Method not allowed when Pinning is enabled.' *** First throw call stack: ( 0 CoreFoundation 0x00000001078a0f35 __exceptionPreprocess + 165 1 libobjc.A.dylib 0x0000000107ea3bb7 objc_exception_throw + 45 2 CoreFoundation 0x00000001078a0e6d +[NSException raise:format:] + 205 3 NMC-Goes 0x00000001044abe44 -[PFQuery setCachePolicy:] + 35 4 NMC-Goes 0x00000001043f6e85 -[PFQueryTableViewController queryForTable] + 341 5 NMC-Goes 0x00000001043f712e -[PFQueryTableViewController loadObjects:clear:] + 110 6 NMC-Goes 0x00000001043f70ba -[PFQueryTableViewController loadObjects] + 58 7 NMC-Goes 0x00000001043f69f9 -[PFQueryTableViewController viewDidLoad] + 73 8 NMC-Goes 0x000000010425ae1a _TFC8NMC_Goes23TripTableViewController11viewDidLoadfS0_FT_T_ + 74 9 NMC-Goes 0x000000010425bca2 _TToFC8NMC_Goes23TripTableViewController11viewDidLoadfS0_FT_T_ + 34 10 UIKit 0x00000001063f3a90 -[UIViewController loadViewIfRequired] + 738 11 UIKit 0x000000010642206b -[UINavigationController _layoutViewController:] + 44 12 UIKit 0x00000001064225b5 -[UINavigationController _updateScrollViewFromViewController:toViewController:] + 216 13 UIKit 0x00000001064226b4 -[UINavigationController _startTransition:fromViewController:toViewController:] + 92 14 UIKit 0x0000000106423487 -[UINavigationController _startDeferredTransitionIfNeeded:] + 523 15 UIKit 0x0000000106423f47 -[UINavigationController __viewWillLayoutSubviews] + 43 16 UIKit 0x0000000106569509 -[UILayoutContainerView layoutSubviews] + 202 17 UIKit 0x0000000106347973 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 521 18 QuartzCore 0x0000000105fdbde8 -[CALayer layoutSublayers] + 150 19 QuartzCore 0x0000000105fd0a0e _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 380 20 QuartzCore 0x0000000105fd087e _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24 21 QuartzCore 0x0000000105f3e63e _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 242 22 QuartzCore 0x0000000105f3f74a _ZN2CA11Transaction6commitEv + 390 23 UIKit 0x00000001062cc54d -[UIApplication _reportMainSceneUpdateFinished:] + 44 24 UIKit 0x00000001062cd238 -[UIApplication _runWithMainScene:transitionContext:completion:] + 2642 25 UIKit 0x00000001062cbbf2 -[UIApplication workspaceDidEndTransaction:] + 179 26 FrontBoardServices 0x000000010b6a12a3 __31-[FBSSerialQueue performAsync:]_block_invoke + 16 27 CoreFoundation 0x00000001077d653c __CFRUNLOOP_IS_CALLING_OUT_TO_A_BLOCK__ + 12 28 CoreFoundation 0x00000001077cc285 __CFRunLoopDoBlocks + 341 29 CoreFoundation 0x00000001077cc045 __CFRunLoopRun + 2389 30 CoreFoundation 0x00000001077cb486 CFRunLoopRunSpecific + 470 31 UIKit 0x00000001062cb669 -[UIApplication _run] + 413 32 UIKit 0x00000001062ce420 UIApplicationMain + 1282 33 NMC-Goes 0x000000010427840e top_level_code + 78 34 NMC-Goes 0x00000001042784ea main + 42 35 libdyld.dylib 0x000000010877a145 start + 1 36 ??? 0x0000000000000001 0x0 + 1 ) 

启用locking时,不能使用旧的查询caching策略。

看到这里: PFQuery类参考 – cachePolicy

我做了一个示例项目来演示问题到Parse.com(请参阅bug: https : //developers.facebook.com/bugs/1544122569192939/ )。

我从Parse得到的回应是,来自cocoapods的ParseUI框架已知有这个问题。

他们build议我从https://parse.com/docs/downloads获取ParseUI

我会试着看看是否解决了我的PFQueryTableViewController问题

编辑:我已经手动添加了框架,并将其从Podfile中取出。 现在崩溃不再发生。 所以错误是在ParseUI cocoapod像parsing告诉我的developers.facebook.com

我也面临同样的问题。
我从下面的类扩展PFQueryTableViewController类和它为我工作。

 if ([self.objects count] == 0) { query.cachePolicy = kPFCachePolicyCacheThenNetworkd; } 

当我尝试Parse时,我得到了确切的堆栈跟踪。 但后来发现我已经在我的应用程序委托中包含了这行代码。

Objective-C的

 [Parse enableLocalDatastore]; 

我删除了这个代码,它像一个魅力。

迅速

去掉:

 Parse.enableLocalDatastore() 
 // // AppDelegate.swift import UIKit import Parse import Bolts @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { Parse.enableLocalDatastore() Parse.setApplicationId("#######", clientKey: "#####") PFAnalytics.trackAppOpenedWithLaunchOptions(launchOptions) return true } 

App Delegate中的setApplicationID而不是Controller为我解决了这个问题。

你可以在swift中试试这个代码。

 if [self.objects].count == 0 { query?.cachePolicy = PFCachePolicy.CacheThenNetwork } 

屏幕截图

我在下面join了“import螺栓”:

 import UIKit import Parse 

如屏幕截图所示。

这为我解决了这个问题。