我想我已经达到了iOS
配置地狱的最低点.迁移到新的mac并进行存档以进行分发后,我收到错误:
代码签名错误:找不到包含任何钥匙串签名证书的未过期配置文件
然后我删除了所有证书和密钥以及配置文件,并按照Apple的说明手动执行了"硬重置"(删除所有密钥,证书和配置文件),但出现了相同的错误.然后我做了另一个硬重置,然后Xcode通过管理器处理整个事情,做了另一个存档 - 只看到相同的错误.
我有所有的证书(WDRCA
,Developer ID Cert Authority
,iPhone Dev
,iPhone Distribution
)显示钥匙串访问,Xcode
表明它看到开发和经销证书,以及供应型材,标有绿色对勾和"有效"状态.
应用程序内的代码签名显示选择了正确的开发和分发.
真正令人不安的是,谷歌搜索错误显示苹果的一个技术说明不太有用,2条推文和3条日语结果 - 没有别的.我联系了其中一个tweeps,他说他用一个很难的结果修复了它,我做了两次.
关于去哪里或下一步做什么的任何想法?
帮助我理解使用网络链接调节器测试可达性代码时所看到的内容.这是我的香草可达性代码:
Reachability* wifiReach = [[Reachability reachabilityWithHostName: @"www.apple.com"] retain];
NetworkStatus netStatus = [wifiReach currentReachabilityStatus];
switch (netStatus)
{
case NotReachable:
{
NSLog(@"Access Not Available");
break;
}
case ReachableViaWWAN:
{
NSLog(@"Reachable WWAN");
break;
}
case ReachableViaWiFi:
{
NSLog(@"Reachable WiFi");
break;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当我使用网络链接调节器使用"100%损失"预设测试此代码时 - 值netStatus
is ReachableViaWWAN
,这是我没想到的.我读了很多关于Reachability没有真正测试连接性的投诉,而是测试了连接的可能性.所以这是我的问题:
"100%丢失"预设是否允许向Apple服务器发出DNS请求,但不允许任何数据包通过?
我创建了一个抛出错误的vanilla Xcode(v6.2)项目(项目A):
'Xcode无法找到"UIViewControllerAnimatedTransitioning"的协议声明
这是代码:
#import <Foundation/Foundation.h>
@interface WTF : NSObject <UIViewControllerAnimatedTransitioning>
@end
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我有一个示例项目,我下载(项目B),我可以把上面的代码放在上面,它将识别UIViewControllerAnimatedTransitioning协议没有问题:
#import <Foundation/Foundation.h>
@interface WTF : NSObject <UIViewControllerAnimatedTransitioning>
@end
Run Code Online (Sandbox Code Playgroud)
我注意到两个项目之间最明显的差异是第二个下载的项目具有在资源管理器中列出的框架,但我使用Xcode 6.2创建的项目没有.在进一步阅读后,我发现新版本的Xcode消除了手动连接框架的需要,所以我不确定它是否相关.
因此,如果项目A在项目B没有的事情上抛出错误,我在Xcode(单视图应用程序)中启动了一个新项目(项目C)并粘贴在:
#import <Foundation/Foundation.h>
@interface WTF : NSObject <UIViewControllerAnimatedTransitioning>
@end
Run Code Online (Sandbox Code Playgroud)
并得到相同的错误:
'Xcode无法找到"UIViewControllerAnimatedTransitioning"的协议声明
重新启动Xcode和Mac,错误仍然存在.
WTF正在这里发生?
我完全无法掌握代码签名,配置和所有相关主题的概念来分发iOS应用程序.尽管事实上我已经在Xcode中开发了2年并且已经在App Store成功推出了2个应用程序 - 我只是不明白.
我试图阅读Apple的文档,但要么我太迟钝了,要么文档不够好,无法让我对这个过程有任何有意义的理解.
我问了一些替代性的博客文章,网站,文章,信息图表,图表,图表,什么是帮助别人得到更好的理解这些关键概念.
我读过的帖子似乎可以治疗症状,而不是问题.
经过大量的学习,我开始编写我的第一个应用程序.
在我的代码中,我有一个名为"Measurement"的类.我想实现一系列测量.这个测量数组需要可以跨多个视图控制器访问,所以我为数组创建了一个名为"MeasurementsArray"的自定义类,并将其组成一个单例.
我已经这样做了,代码按预期工作.但是现在我已经有了它,我想确保我有易于理解的代码,并且我遵循传统的Objective-c设计模式.
如果事实上我不需要测量数组是一个单例,那么这个数组似乎属于"Measurement"类作为类方法.但我的理解是,当一个类是单例时,只能有一个类的实例.
但不知何故,有一个名为"MeasurmentsArray"的单独课程对我来说似乎有点笨拙.
我的问题:
我是以正确的方式接近这个,还是我错过了什么?
如果我确实需要将Measurements数组拆分为一个单独的类以使其成为单例,那么"MeasurementsArray"是否恰好是一个合适的类名?如果没有,请提供您将用于此类情况的命名约定.
编辑:在一些初步答案之后,关于应用程序功能的一些说明可能会有所帮助.
它是一种健身应用程序,可记录,保存和跟踪体脂百分比和体重.每当用户记录他的身体脂肪和体重时,它就成为"测量"类的一个实例.需要一系列测量来跟踪体重和体脂随时间的变化.需要单例,因为多个视图控制器需要访问该数组.
我有一个带有单元格的UITableView,可以在选中时将viewControllers推送到堆栈.子视图控制器接受用户输入,然后弹出堆栈.
当弹出子viewController时,我希望父tableView更新所选单元格的值,然后取消选择该行.我可以使用reloadData更新单元格,我可以使用deselectRowAtIndexPath取消选择该行 - 但我不能同时执行这两个操作.
我理解为什么这是 - reloadData隐式取消选择单元格,deselectRowAtIndexPath明确地取消选择它,但我发现很奇怪我找不到任何想要实现相同重载/取消选择行为的人.我在这里错过了什么?
所有代码都在viewWillAppear:animated中 - 如果我在viewWillAppear中放置deselectRowAtIndexPath并在viewDidAppear中放入reloadData,我可以接近,但这不是我想要的.
code-signing ×2
ios ×2
arrays ×1
certificate ×1
class ×1
cocoa ×1
cocoa-touch ×1
delegates ×1
networking ×1
nsobject ×1
objective-c ×1
reachability ×1
reloaddata ×1
singleton ×1
uitableview ×1
xcode6 ×1