我有一个应用程序,它使用一个连接队列来处理后台线程上的连接.每个连接发送一个JSON帖子,然后当它收到成功时,将一些对象保存到coredata中.
一旦所有连接完成,我调用dispatch_async主线程来调用finished方法.
但是,在非常特定的数据发送/保存条件下,我注意到dispatch_async主线程的块永远不会被调用,应用程序屏幕冻结,所有执行停止,应用程序处于空闲状态并冻结屏幕.根据xcode的处理能力为0%.
这是块失败的方法.
- (void)connectionDidComplete
{
_completeConnections++;
_syncProgress = (float)_completeConnections / (float)_totalConnections;
dispatch_async(mainQueue, ^(void) {
[[NSNotificationCenter defaultCenter] postNotificationName:SyncQueueDidUpdateNotification object:nil];
}); <-- this dispatch works
if (_completeConnections == _totalConnections)
{
// clear unsynced data
NSArray *syncedObjects = [SyncObject completedSyncObjects];
if (syncedObjects.count > 0)
{
for (SyncObject *syncObject in syncedObjects)
{
[syncObject delete];
}
}
//this method saves the current context, then merges this context with the main context right after
[[VS_CoreDataManager sharedManager] saveManagedObjectContextAndWait:managedObjectContext];
// …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用我给出的旧应用程序向应用程序商店提交存档.我一直收到两个错误CFBundleShortVersionString键必须在plist中并且更麻烦'包不包含plist'
这两个项目都存在于应用程序中.我将plBundleShortVersionString键添加到plist中,并且plist文件绝对存在或者我永远无法构建它.这是什么问题?
我正在转换应用程序UIWebView,WKWebView并且有一个自动登录功能,该功能是通过保存带有用户身份验证信息的cookie来处理的NSHTTPCookieStorage.但是,WKWebView似乎没有查看cookie的这个位置,因此每次都会提示用户使用登录屏幕.
是否需要激活WKWebView正确使用cookie?
在我的一个观点中,当按下按钮时,我调用另一个视图SplitViewController.如果SplitViewController通过其中一个按钮调用它,我会有特殊的对象添加到视图中.主要是导航栏项目,如取消按钮.这个视图可以在别处访问,不需要这些项目,这就是为什么有特殊条件.
然而,当用户完成并且我ViewController回到所选择的前一个屏幕时,导航栏在该屏幕上消失.我没有将它设置为隐藏,也不是我对导航栏做了什么奇怪的事情.只需添加SplitViewController然后弹出.
一些代码..
//declare the split screen VC
SplitScreenViewController *split = [[SplitScreenViewController alloc] init];
//set the flag that this VC is coming from a button, so we need the extra nav bar items
[split setIsFromButton:YES];
[self.navigationController pushViewController:split animated:YES];
Run Code Online (Sandbox Code Playgroud)
现在回电只是......
- (void)cancelSelectionBtnClicked
{
[self.navigationController popViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
当视图返回时,导航栏消失.
有任何想法吗?
编辑它应该注意这完全相同的事情在其他地方以相同的方式完成(据我所知)并且导航栏在返回时可见.
我收到核心数据错误,我无法弄清楚如何修复.
我基本上将对象的所有数据都拉出到字典中,将数据显示到表单中,并且某些字段允许编辑,然后尝试在提交时将数据存储回对象.
但是,在设置所有新的/更新的值时,我得到错误
Unacceptable type of value for attribute: property = "totalLocations"; desired type = NSNumber; given type = __NSCFString; value = 7.
这是处理这个特定属性的代码......
//grab the value from the property
if (myObject.totalLocations)
[data setObject:myObject.totalLocations forKey:@"totalLocations"];
// store it back to the object
_myObject.totalLocations = [data objectForKey:@"totalLocations"];
Run Code Online (Sandbox Code Playgroud)
除了这两行外,没有太多的财产使用.它可以被修改,但不能被这个特定屏幕上的用户修改
我已经在连接队列中测试了我的应用程序中的连接丢失,并且我注意到我能够使我的应用程序进入错误识别连接的状态.要么在没有连接时说有连接,要么在连接时没有连接.
在我检查连接时,我已经将问题追溯到SCNetworkReachabilityFlags不正确.并且这些标志一直保持到连接状态改变为止.因此,实际上没有办法让应用程序脱离错误的状态,而不是重新启动它,或连接通知正常启动
我正在使用apple的reachability.m在这里找到 https://developer.apple.com/library/ios/samplecode/Reachability/Listings/Reachability_Reachability_m.html#//apple_ref/doc/uid/DTS40007324-Reachability_Reachability_m-DontLinkElementID_8
问题出在'networkStatusForFlags'方法中.基本上传入的标志是不正确的.模拟器运行的我的机器将与WIFI连接,但返回的标志仍然在kSCNetworkReachabilityFlagsReachable上触发.
有什么方法可以解决这个问题吗?我觉得标志不正确是SCNetworkReachabilityFlags的核心苹果问题,但我觉得如果是这种情况,这将是一个更普遍的问题.
我得到了一个项目文件,打开后我注意到NSLog没有打印到控制台.
我尝试过shift + command + c,但是没有用.
奇怪的是,如果我打开任何其他项目,他们打印到控制台就好了.然而,这个没有.这是一个xcode设置吗?如果是这样,为什么只有这个项目才有效?以及如何修复它?
我正在尝试向uiNavigationBar添加一些按钮,但它没有附加到导航控制器,我不希望它.
我试图在栏的左侧添加两个按钮,但我发现的唯一代码示例允许这涉及使用该行
self.navigationItem.leftBarButtonItems
Run Code Online (Sandbox Code Playgroud)
显然,我的UINavigationBar不是navigatinItem.
以下是我创建NavBar的方法..
.H
@property (nonatomic, retain) UINavigationBar *navBar;
Run Code Online (Sandbox Code Playgroud)
.M
_navBar = [[UINavigationBar alloc] init];
[_navBar setFrame:CGRectMake(0,0,self.view.bounds.size.width,52)];
[self.view addSubview:_navBar];
Run Code Online (Sandbox Code Playgroud)
我已经看到了将项目推送到导航栏的两种方法,但都没有工作.
首先......
UIBarButtonItem *barButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAction
target:self
action:@selector(buttonSettingClicked)];
[[self navigationItem] setLeftBarButtonItem:barButton]
Run Code Online (Sandbox Code Playgroud)
和
self.navigationItem.leftBarButtonItems = _ArrayOfBarButtons;
Run Code Online (Sandbox Code Playgroud)
没有人产生任何结果...我怀疑因为我的UINavigationBar在技术上不是一个"导航项目".
那么如何将项目添加到我的NavigationBar?
我正在尝试对对象数组执行简单的谓词过滤.
数组中的对象有2个属性,displayValue和value.我试图根据搜索字符串进行过滤,然后崩溃了.
NSPredicate *pred = [NSPredicate predicateWithFormat:@"displayValue CONTAINS[cd] %@", searchString];
NSArray *results = [_data filteredArrayUsingPredicate:pred];
Run Code Online (Sandbox Code Playgroud)
这种格式导致Can't use in/contains operator with collection 100 (not a collection)崩溃的确切错误是什么?
我只使用xcode中的故事板,但我的新老板希望每个人都在xib文件中完成,其中我没有经验.
到目前为止我所做的就是创建了一个新的单视图应用程序,并在'viewDidLoad'方法下添加了代码..
UILabel *scoreLabel = [ [UILabel alloc ] initWithFrame:CGRectMake(0, 0.0, 150.0, 43.0) ];
[self addSubview:scoreLabel];
Run Code Online (Sandbox Code Playgroud)
和线
[self addSubview:scoreLabel];
Run Code Online (Sandbox Code Playgroud)
抛出错误'No Visible @Interface for'ViewController'声明选择器'addSubView'
我到底错过了什么?
ios ×10
objective-c ×9
xcode ×6
iphone ×5
ipad ×4
app-store ×1
core-data ×1
nspredicate ×1
wkwebview ×1