我有一个嵌入WebKit WebView的Cocoa/Objective-C应用程序.我需要打开数据库支持和本地存储.我知道它可以完成 - 我在Safari中工作 - 但我找不到如何在我自己的应用程序中设置它的示例.
我发现这个(未答复的)SO问题提供了一个例子,但正如原始海报所提到的那样,它不起作用.事实上,他使用的方法(setDatabasesEnabled,setLocalStorageEnabled)没有在我的WebKit.framework(Xcode 3.2.5)中定义,尽管如果我自己定义它们似乎存在它们.
任何人都可以提供一个如何为基于WebKit的Cocoa应用程序启用本地数据库存储的示例吗?非常感谢如果是这样!
更新:我有一些工作......我对"数据库"与"本地存储"感到困惑,这显然是完全不同的东西.这是有效的代码:
WebPreferences* prefs = [webView preferences];
[prefs _setLocalStorageDatabasePath:@"~/Library/Application Support/MyApp"];
[prefs setLocalStorageEnabled:YES];
Run Code Online (Sandbox Code Playgroud)
这样可行,但它需要私有方法_setLocalStorageDatabasePath,这意味着我没有App Store.所以我现在修改过的问题是:有没有办法在不使用私有方法的情况下完成这项工作?我在这个答案中找到了WebDatabaseDirectory首选项键,它控制着数据库的位置.但我无法在源中的任何位置找到相应的本地存储密钥.或者有没有办法强制本地存储使用数据库,所以WebDatabaseDirectory键?有任何想法吗?
我需要开发一个新的自定义NSControl.我能找到的所有指南和示例(包括Apple的Subclassing NSControl文章)都是围绕NSCell构建的.但是从10.10开始,NSControl上的所有与单元格相关的消息都已被弃用.
我尝试创建一个子类并通过IB中的自定义视图添加到我的项目中,但是我无法让控件接受第一响应者,尽管已启用,将refusesFirstResponder设置为NO,并从acceptsFirstResponder返回YES.而且我确信我错过了很多应该存在的功能(价值变化通知等).
是否有更新的参考,显示如何开发控件?如果有的话,我的Google-fu会让我失望.谢谢!
我整天都在看这个.几个小时前我可能应该离开它; 在这一点上,我可能会遗漏一些明显的东西.
简短版本:有没有办法生成并将非对称加密的哈希值归结为合理数量的明确的,人类可读的字符?
长版:
我想为我的软件生成许可证密钥.我希望这些键具有合理的长度(25-36个字符)并且易于人类读取和输入(因此避免使用数字0和大写字母O等模糊字符).
最后 - 这似乎是踢球者 - 我真的很想使用非对称加密来使生成新密钥变得更加困难.
我有一般的方法:将我的信息(用户名,产品版本,盐)连接成一个字符串并从中生成一个SHA1()哈希,然后用我的私钥加密哈希.在客户端上,从相同的信息构建SHA1()哈希,然后使用公钥解密许可证,看看我是否有匹配.
由于这是一个Mac应用程序,我查看了AquaticPrime,但这会生成一个相对较大的许可证文件而不是字符串.如果必须,我可以使用它,但作为用户,我非常喜欢我可以阅读和打印的许可证密钥的便利性.
我还看了CocoaFob确实生成了一个密钥,但它太长了以至于我还是想把它作为一个文件提供.
我在OpenSSL上愚弄了一段时间,却无法想出任何合理的长度.
那么......我错过了一些明显的东西吗?有没有办法生成并将非对称加密的哈希值归结为合理数量的明确的,人类可读的字符?
我愿意购买解决方案.但我在许多不同的平台上工作,所以我想要一些便携的东西.到目前为止,我所看到的一切都是特定于平台的.
很多,非常感谢您的解决方案!
PS - 是的,我知道它仍然会被破解.我想提出一些合理的东西,作为一个用户,我仍然会发现友好.
我只是为一个项目设置Git LFS,对于非图像文件(例如预编译库),它工作得很好.但即使我尝试重置(git checkout --
)它们,所有的.png和.jpg文件也会一直显示为修改过.
条目看起来都是一样的.gitattributes
:
*.jpg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.so filter=lfs diff=lfs merge=lfs -text
Run Code Online (Sandbox Code Playgroud)
输出git diff
不是非常有用:
diff --git a/Design/faviconit/favicon.ico b/Design/faviconit/favicon.ico
index 3202014..b5d3daf 100755
Binary files a/Design/faviconit/favicon.ico and b/Design/faviconit/favicon.ico differ
Run Code Online (Sandbox Code Playgroud)
我不确定我应该采取哪些其他步骤来诊断问题.有没有其他人遇到这个?有任何想法吗?谢谢!
更新:
它实际上不是所有的图像文件,只是它们的一部分.但只有图像文件显示问题.
我尝试删除所有有问题的图像并推送该提交.然后在另一台机器上我添加了一些文件并再次推送.当我提取新的更改时,我遇到了同样的问题:文件立即显示为已修改.这些文件在磁盘上看起来是正确的,实际上与原件相同.
我正在创建一个依赖于 Xamarin.Forms 的 NuGet 包。该包应该可以与任何最新版本的 Forms 一起正常工作,因此我将其设置为:
\n\n<Project Sdk="Microsoft.NET.Sdk">\n\n <PropertyGroup>\n <TargetFramework>netstandard2.0</TargetFramework>\n <PackageId>MyCompany.FormsExtras</PackageId>\n </PropertyGroup>\n\n <ItemGroup>\n <PackageReference Include="Xamarin.Forms" Version="4.*" />\n </ItemGroup>\n</Project>\n
Run Code Online (Sandbox Code Playgroud)\n\n在本地构建并发布以测试...
\n\n$ dotnet pack -c Release -p:Version=0.9.0\n$ nuget add bin/Release/MyCompany.FormsExtras.0.9.0.nupkg -source ~/Dropbox/Packages/\n
Run Code Online (Sandbox Code Playgroud)\n\n当我运行这些命令时,Xamarin.Forms 4.1.0.555618 是最新版本。
\n\n我现在尝试将此包放入现有项目中,该项目直接依赖于不同的旧版本的 Xamarin.Forms:
\n\n$ dotnet pack -c Release -p:Version=0.9.0\n$ nuget add bin/Release/MyCompany.FormsExtras.0.9.0.nupkg -source ~/Dropbox/Packages/\n
Run Code Online (Sandbox Code Playgroud)\n\n...但它无法添加包并出现以下错误:
\n\nDetected package downgrade: Xamarin.Forms from 4.1.0.555618 to 4.0.0.425677. Reference the package directly from the project to select a different version. \n MyCompany.ToDo.Forms -> MyCompany.FormsExtras …
Run Code Online (Sandbox Code Playgroud)