我需要将数据保存到NSUserDefault我的iOS自定义键盘中.我已经在开发人员门户网站中成功创建了应用程序组和权利XCode.
以下是我如何使用UISwitch保存我的价值
- (IBAction)switchAction:(id)sender
{
[self.defaults setBool:self.myKey.on forKey:@"myValue"];
[self.defaults synchronize];
}
Run Code Online (Sandbox Code Playgroud)
这是我如何在KeyboardView中加载值.
self.defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.mycompany.customkeyboard"];
if([self.defaults boolForKey:@"myValue"])
{
self.backgroundColor = [UIColor redColor];
}
else
{
self.backgroundColor = [UIColor blackColor];
}
Run Code Online (Sandbox Code Playgroud)
它不起作用,也没有加载价值.
我如何保存和加载数据?
我创建了键盘扩展,并且需要访问 CoreData。它在容器应用 AppDelegate 中运行良好。但是从扩展中我无法访问数据。首先,我需要 NSManagedObjectContext 的实例,而我没有。
那么我怎样才能通过使用 AppGroup 或其他东西来获取这个上下文呢?
顺便说一句,当扩展启动时,它会在日志下一条消息中打印:
Warning: CFFIXED_USER_HOME is not set! It should be set to the simulated home directory.
Failed to inherit CoreMedia permissions from 16808: (null)
Run Code Online (Sandbox Code Playgroud)
它有什么问题?
我创建了一个iOS 8应用程序,它使用新的应用程序组功能与扩展共享Core Data存储.它工作得很好,以为我会尝试使用2个独立的应用程序在App Group容器中共享Core Data存储.但是当它在App和Extension之间起作用时,我在与2个应用程序共享时遇到了Core Data存储损坏问题.
根据我打开2个应用程序的顺序,我会得到不同的错误:
Fetches导致此错误:
CoreData:错误:(522)/private/var/mobile/Containers/Shared/AppGroup/[...].sqlite中数据库的I/O错误.SQLite错误代码:522,'不是错误'
保存导致此错误:
CoreData:错误:(11)致命错误./private/var/mobile/Containers/Shared/AppGroup/[...].sqlite中的数据库已损坏.SQLite错误代码:11,'数据库磁盘映像格式错误'
要么:
核心数据:错误:-executeRequest:在SQL执行期间遇到异常=错误:PRIMARY KEY必须与userInfo = {NSFilePath ="/private/var/mobile/Containers/Shared/AppGroup/[...].sqlite"; NSSQLiteErrorDomain = 19; } CoreData:错误:(19)PRIMARY KEY必须是唯一的
自从我开始使用App Groups在我的App和Today Extension/Widget之间共享Core Data以来,我遇到了一个问题.当我删除我的应用程序时,核心数据在设备上维护,而不是像以前一样被删除.
我知道之前已经问过这个问题:卸载应用程序不会删除应用程序组数据.我是否必须手动删除应用程序组容器及其内容?
答案说这是一个错误,Apple修复了它.但是我仍然遇到iOS 9.2的问题
如何确保删除我的应用程序还会删除核心数据?
当我尝试将我的应用程序上传到 Mac App Store 时,出现错误 -
iTunes Store 操作失败。
无效的代码签名权利。您的应用程序包的签名包含 Mac OS X 不支持的代码签名权利。具体来说,“com.MyCompany.mac”中密钥“com.apple.security.application-groups”的值“[group.MyCompany.MyProject]”。不支持 MyProject.pkg/Payload/MyProject.app/Contents/MacOS/MyProject'。该值应该是一个字符串或一个字符串数组,每个字符串都以您的 TEAMID 开头,后跟一个点“.”。.
但我读到共享组必须以group.前缀开头- 那么正确的方法是什么?
我需要能够拥有3个可以相互通信的快速应用程序。将应用程序1视为与服务器通信并将信息存储在本地数据库中的基本应用程序,而应用程序2和3需要读取(并可能写入)在应用程序1中创建的该数据库。
从网上看,“应用程序组”似乎可以实现。如果所有3个应用程序都在同一个应用程序组下,它们会自动具有一个“共享文件夹”,我可以在其中创建和/或存储Realm数据库吗?应用程序2和3是否会使用NSFileManager与该共享文件进行交互?我似乎找不到实际的例子。
我们是否可以支持应用组路径的文件共享
例如
#define APP_GROUP_PATH [[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.xxx.xxx"] path]
Run Code Online (Sandbox Code Playgroud)
在以下旗帜的帮助下?
应用程序支持iTunes文件共享
我希望我的文件能够显示在位于应用程序组共享容器中的iTunes应用程序中.
我正在编写一个涉及将文件写入磁盘的XCTest.我正在使用AppGroup来定义文件路径.这在设备或模拟器上运行良好.
class func filePath()->URL {
guard let path = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "my.app.group.id") else {
fatalError("No File Path")
}
let filePath = path.appendingPathComponent("filename.json")
return filePath
}
Run Code Online (Sandbox Code Playgroud)
...但是containerURL在XCTest环境中不返回任何内容.测试崩溃了.
如何生成适用于单元测试的临时路径?
我正在尝试调试iOS应用扩展,我所能做的就是设置断点,但是能够打印到控制台会很好。
Xcode 9有可能吗?
或者至少在某处读取它,也许是一个文件?
我去了“设备和模拟器”中查看设备的日志,但是找不到我从iOS应用程序扩展中打印的内容。
我的 iOS 应用程序及其扩展通过应用程序组容器在本地成功共享文件。设置后,该应用程序还将其应用程序容器的文档文件夹中的文件公开给文件应用程序UISupportsDocumentBrowser in the app's info.plist.
我怎么能够expose files stored in the app-group's container to the Files app?
扩展(小部件)在应用程序组容器中生成文件,并以这种方式与应用程序共享它们。目前,应用程序将更改的文件从应用程序组容器复制到应用程序容器的文档文件夹,以将它们公开给文件应用程序。这会带来延迟,因为应用程序只能在运行时(在前台或后台)进行复制。
ios-app-group ×10
ios ×7
swift ×4
core-data ×2
ios8 ×2
appdelegate ×1
appgroups ×1
containers ×1
entitlements ×1
file-sharing ×1
files-app ×1
itunes ×1
macos ×1
realm ×1
unit-testing ×1
xctest ×1