- (void)viewDidLoad
{
NSLog(@"%s", __func__);
// ...
}
Run Code Online (Sandbox Code Playgroud)
在viewDidLoadiOS 8 扩展中.在 NSLog输出没有在Xcode.NSLog虽然在容器应用程序中照常工作.
如何从扩展中获取调试消息的输出?
iOS 8昨天发布了一个关于App Groups的新API.在分享数据和在应用程序之间进行通信之前,它有点混乱,我相信这正是App Groups要纠正的内容.
在我的应用程序中,我启用了应用程序组并添加了一个新组,但我找不到任何有关如何使用它的文档.文档和API参考仅说明如何添加组.
那么App Group真正打算做什么呢?有没有关于如何使用它的文件?
我正在尝试使用cocoapods库在Xcode 6 Beta-6中构建照片App扩展.Xcode为照片扩展创建的桥接标头无法从cocoapods中看到任何内容.
例如:#import <GPUImage/GPUImage.h>导致错误"GPUImage/GPUImage.h" file not found.
我已经尝试了所有可以想象的导入路径(括号和引号)并且几乎没有成功.例外情况是,对于简单的pod来说SVProgressHUD,以下丑陋可怕的黑客行为:
#import "../Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h".
但对于GPUImage,它走进GPUImage.h标题并决定它突然看不到,GPUImageContext.h尽管没有问题,当导入时使用桥接标头作为不属于应用程序扩展的普通swift代码.
编译应用程序扩展有什么不同,这会阻止桥接头部表现得很好?
注意:我已经阅读了本教程的所有可能的排列,并且它不能立即应用,以防万一有人认为他们已经找到答案.
我正在尝试将Swift中的Today Extension添加到我的Objective-C应用程序中.我在调试器日志中不断收到此消息:Failed to inherit CoreMedia permissions from 3005: (null).数字ex.3005每次都不同.我正在从小部件中读取NSUserDefaults,但我正在应用程序本身阅读/写作.我的TodayViewController中唯一的代码如下:
override func viewDidLoad() {
super.viewDidLoad()
let formatter = NSNumberFormatter()
formatter.numberStyle = .CurrencyStyle
totalLabel.text = formatter.stringFromNumber(0)
coinsLabel.text = formatter.stringFromNumber(0)
formatter.maximumFractionDigits = 0
billsLabel.text = formatter.stringFromNumber(0)
}
func widgetMarginInsetsForProposedMarginInsets(defaultMarginInsets: UIEdgeInsets) -> UIEdgeInsets {
return UIEdgeInsetsMake(8.0, 16.0, 8.0, 16.0)
}
func widgetPerformUpdateWithCompletionHandler(completionHandler: ((NCUpdateResult) -> Void)!) {
// Perform any setup necessary in order to update the view.
// If an error is encountered, use NCUpdateResult.Failed
// If there's no update required, use …Run Code Online (Sandbox Code Playgroud) 最近,我一直在制作一个简单的iOS 8共享扩展来了解系统的工作原理.正如Apple在其App Extension编程指南中所述:
默认情况下,您的应用及其扩展程序无法直接访问彼此的容器.
这意味着扩展程序和包含应用程序不共享数据.但在同一页面上,Apple带来了一个解决方案:
如果您希望包含应用及其扩展能够共享数据,请使用Xcode或Developer门户为应用及其扩展启用应用组.接下来,在门户中注册应用程序组,并指定要在包含的应用程序中使用的应用程序组.
然后,可以使用NSUserDefaults在包含应用程序和扩展程序之间共享数据.这正是我想做的.但由于某种原因,它不起作用.
在同一页面中,Apple建议使用标准默认值:
var defaults = NSUserDefaults.standardUserDefaults()
Run Code Online (Sandbox Code Playgroud)
在WWDC演示文稿(217)中,他们提出了一个共同的方案:
var defaults = NSUserDefaults(suiteName: kDefaultsPackage)
Run Code Online (Sandbox Code Playgroud)
此外,我为包含应用目标和扩展目标的应用组启用了相同的应用组名称:

但所有这些设置都是无用的.我无法从扩展程序中检索存储在包含应用程序中的数据.就好像两个目标正在使用完全不同的NSUserDefaults存储.
所以,
我正在尝试构建一个扩展项目,Xcode不断抛出主题中的错误.

不用一天,扩展程序的包ID 以app的包ID 为前缀.
产品名称: ro.chitza.TodayPics.$(TARGET_NAME:rfc1034identifier

我已经尝试清理构建文件夹并重建,没有运气.有趣的是,整个项目已经构建了几次,但在一些代码和UI更改后,它开始失败.即使我创建了新项目,在大约5-6个构建之后也会发生同样的事情.
有没有人遇到这个错误?有关解决方案或解决方法的任何提示吗?
我为我的应用程序+报价实现了一个Today小部件,它在这些Apple Docs的帮助下在通知中心显示当天的报价.我想要完成的是打开Containing App,在这种情况下是+ Quotes,当用户在他们的Today通知视图中点击+ Quotes小部件时,并不完全确定要调用它的内容,因为Calendar会在今天看.我已经尝试在标签上覆盖一个按钮,该按钮会调用
-(void)openURL:(NSURL *)URL completionHandler:(void (^)(BOOL success))completionHandler
它,然后打开我声明要打开Containing App的自定义URL方案.问题是它没有打开Containing App.

-(IBAction)myButton:(id)sender {
NSURL *customURL = [NSURL URLWithString:@"PositiveQuotes://"];
[self openURL:customURL completionHandler:nil];
}
Run Code Online (Sandbox Code Playgroud) 存档我的应用时遇到问题.
我为iOS 8扩展创建了一个新目标.
归档应用程序时,我收到警告.
警告是
"PBXCp警告","警告:跳过复制阶段,二进制代码签名:/ Users/Library/Developer/Xcode/DerivedData/App/Build/Intermediates/ArchiveInter mediates/AppName/IntermediateBuildFilesPath/UninstalledProducts/AppExtappex/AppE xt"
该应用程序位于Objective-C中.
应用程序图标下面的应用程序名称旁边的红点(圆圈)是什么意思?

我在应用程序中添加了Today Extension(Widget).只有当我在iOS 8上启动应用程序时,它才会出现在iOS 7模拟器上.即使我删除了扩展程序并清除了模拟器,它仍然出现在应用程序名称之前.
添加Today App Extension Target后,我无法编译项目.以下是错误:
Run Code Online (Sandbox Code Playgroud)error: Embedded binary is not signed with the same certificate as the parent app. Verify the embedded binary target's code sign settings match the parent app's.嵌入式二进制签名证书:iPhone开发人员:(开发者名称)(编号)
家长App签名证书:iPhone开发人员:(开发者名称)(编号)
但嵌入式二进制证书和父应用程序的证书是相同的.所以我现在很困惑......
ios8 ×8
ios ×6
xcode6 ×4
swift ×3
objective-c ×2
xcode ×2
cocoapods ×1
homescreen ×1
icons ×1
xcode6-beta6 ×1