小编myl*_*gon的帖子

如何在基于块的API方法中使用非空和可空的Objective-C关键字

考虑以下方法

- (void)methodWithArg:(NSString *)arg1 andArg:(NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;
Run Code Online (Sandbox Code Playgroud)

使用new nonnullnullable annotation关键字,我们可以丰富它如下:

- (void)methodWithArg:(nonnull NSString *)arg1 andArg:(nullable NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;
Run Code Online (Sandbox Code Playgroud)

但是我们也得到了这个警告:

指针缺少可为空类型说明符(__nonnull或__nullable)

它指的是第三个参数(块1).

文档未介绍如何指定块参数的可为空性的示例.它逐字陈述

只要类型是简单对象或块指针,就可以在打开括号后立即使用非下划线形式为nullable和nonnull.

我尝试将两个关键字中的一个放在块中(在任何位置),没有任何运气.还尝试了下划线前缀变体(__nonnull__nullable).

因此我的问题是:如何为块参数指定可空性语义?

xcode nullable block objective-c

96
推荐指数
2
解决办法
6万
查看次数

错误:参数列表太长:递归标题扩展失败/ Applications/Adob​​e Acrobat 8​​ Professional/Adob​​e Acrobat Professional.app/

可以任何人告诉为什么会发生此错误以及如何解决它

检查依赖关系

参数列表太长:递归标题扩展失败/ Applications/Adob​​e Acrobat 8​​ Professional/Adob​​e Acrobat Professional.app/Contents/Plug-ins/Comments.acroplugin/Contents/MacOS.

xcode

35
推荐指数
2
解决办法
3万
查看次数

记住UITableView上的滚动位置

我在xcode中的iOS应用程序有点问题.我有一个UITableView加载几百个单元格.当我向下滚动到特定单元格并向下钻取到详细视图控制器并再次返回时,主视图表一直返回到顶部.我看过以下两个相似的问题.

如何获取UITableView滚动位置以便保存?

在UITableView中设置滚动位置

我仍然无法让这些工作.我不是最有经验的编码员,所以我真的很挣扎.

我知道像viewWillDisappear和viewDidAppear这样的东西需要改变,但我真的不能比这更进一步.

在此表中,我有一个reloadData功能,因此可以从服务器和工作搜索栏中下载最新数据.

无论如何,伸出援助之手会很棒.谢谢,

卢克

uitableview uiviewcontroller viewdidappear reloaddata ios

30
推荐指数
2
解决办法
2万
查看次数

如何获取SSL固定的公钥哈希?

如何获取公共证书信息的哈希值,以便能够在我的应用程序中执行SSL固定?

我在我的iOS应用程序中使用TrustKit,它要求我设置我期望的哈希.我在哪里可以得到这个?

ssl x509 pinning ios pkix

24
推荐指数
4
解决办法
2万
查看次数

无法发送推文:插件com.apple.share.Twitter.post无效

我的应用程序使用SLComposeViewController发布到Twitter.这工作了几个月,然后大约一个星期前突然停止了.Twitter共享视​​图允许我按"发布",以下代码仍然到达"..."行:

    twitterComposeViewController.completionHandler =
^(SLComposeViewControllerResult result){
        if (result == SLComposeViewControllerResultDone){
            ...
        }
    };
Run Code Online (Sandbox Code Playgroud)

并且驳回了Twitter分享视图,但推文失败了.我得到一个警告视图说,

无法发送推文

无法发送推文"[我的推文文本]",因为与Twitter的连接失败.

片刻之后,控制台记录,

插件com.apple.share.Twitter.post无效

我在SO上看了一些类似的问题,但没有一个有适用的答案(我的推文没有超过字符限制;我已正确登录;等等).我在apps.twitter.com检查了我的设置,我没有看到任何异常...我的消费者密钥和秘密没有改变......

任何人都知道如何获得有关错误的更多信息,或者我应该检查什么?谢谢.

twitter ios

9
推荐指数
2
解决办法
5734
查看次数

将React Native集成到Xamarin项目中

我的任务是查看是否可以将React Native集成到Xamarin.Forms项目中.
我认为我已经非常接近实现这一点,但我不能肯定地说.我知道这是一个奇怪/倒退的解决方案,但无论如何我还想去看看它是否能击败它......

简介
我的雇主想要看看是否可以使用React Native for UI并使用C#作为业务逻辑.它正在作为一种解决方案进行探索,以便UI/UX团队可以与RN合作,我们(开发团队)可以将逻辑链接到它.

到目前为止,我已经尝试
了通过cd'ing终端删除本地节点服务的依赖性并运行react-native bundle --entry-file index.ios.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios(从这篇博客文章中获取)的React Native输出和启动的Xcode项目.然后我更改了AppDelegate它正在寻找main.jsbundle文件的行.
然后我添加了一个静态库作为项目的目标.与应用程序的构建阶段相比,我添加了所有相同的链接库在此输入图像描述
在此之后,我创建了一个Xamarin.Forms解决方案.因为我只创建了iOS库,所以我创建了一个iOS.Binding项目.我添加了Xcode .a lib作为本机引用.在ApiDefinition.cs文件中,我使用以下代码创建了接口

BaseType(typeof(NSObject))]
    interface TheViewController
    {
        [Export("setMainViewController:")]
        void SetTheMainViewController(UIViewController viewController);
    }
Run Code Online (Sandbox Code Playgroud)

在Xcode项目中,创建了一个TheViewController类.这setMainViewController:是通过以下方式实现的:

-(void)setMainViewController:(UIViewController *)viewController{

  AppDelegate * ad = (AppDelegate*)[UIApplication sharedApplication].delegate;

  NSURL * jsCodeLocation = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"main" ofType:@"jsbundle"]];

  RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
                                                      moduleName:@"prototyper"
                                               initialProperties:nil
                                                   launchOptions:ad.savedLaunchOptions];
  rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f …
Run Code Online (Sandbox Code Playgroud)

xamarin react-native

7
推荐指数
1
解决办法
1621
查看次数

创建非跟踪应用内Web浏览器

我正在尝试创建一个不在本地跟踪或存储任何浏览历史记录的webview(作为练习).
我已经做到了这一点,当webview关闭时,它会调用以下内容

[[NSURLSession sharedSession]resetWithCompletionHandler:^{}];
Run Code Online (Sandbox Code Playgroud)

但我发现像谷歌搜索历史这样的东西会在会话之间持续存在.我也试过通过单独清除cookie

NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (NSHTTPCookie *cookie in [storage cookies]) {
       [storage deleteCookie:cookie];
    }
[[NSUserDefaults standardUserDefaults] synchronize];
Run Code Online (Sandbox Code Playgroud)

仍无济于事.在创建新的Web视图时,Google搜索仍会显示.
是否有人知道一种方法来删除谷歌用来匹配该搜索历史记录的标识符给我?我担心它的类似于包标识符,这可能有点难以防止被读取.
任何想法都表示赞赏.
此致,
卢克

nshttpcookie ios nsurlsession

7
推荐指数
1
解决办法
873
查看次数

核心数据插入多个对象

这是用关系保存多个对象的正确方法吗?或者有没有办法改进代码并保存上下文一次?谢谢!!

for (NSDictionary *entries in dataArray){
    module = [NSEntityDescription insertNewObjectForEntityForName:@"Modules" inManagedObjectContext:context];
    module.m_id=[entries objectForKey:@"id"];
    module.m_name = [entries objectForKey:@"name"];
    module.m_timestamp = [NSDate date];

    //This line links the product by adding an entry to the NSSet of list for the module relation
    [product addModulesObject:module];

    //This line link the module with the product using product relation
    [module setProduct:product];

    NSError *error = nil;
    if (![context save:&error]) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
}
Run Code Online (Sandbox Code Playgroud)

core-data insert object objective-c

5
推荐指数
1
解决办法
2791
查看次数

在没有 iCloud 同步的情况下将项目存储在 iOS 钥匙串中?

我正在 iOS 中开发一个应用程序,我需要在应用程序中注册帐户期间将安全数据存储在钥匙串中。
我面临的问题是,有时,当用户拥有第二台设备时,他们的注册(怀疑)会失败,因为由于在 iCloud 中同步,该项目已存在于钥匙串中。可能是用户重新安装了应用程序并且钥匙串中的一个项目在重新安装后幸免于难,但不幸的是,给我的唯一详细信息是“用户无法注册”日志文件,它抱怨钥匙串项目.

可悲的是,这个注册过程是一成不变的,因为它是一个已经在生产中的继承项目,所以我不能真正改变它太多。

我的下意识反应是以某种方式阻止该项目跨设备同步,但我什至似乎找不到任何表明这是可能的。
欢迎所有想法
谢谢

编辑
我刚刚意识到我的问题不是很清楚。我想这是一个两部分
1. 有没有办法阻止钥匙串项目与 iCloud 同步。
2. 如果没有,有人能想出办法吗?

keychain ios

3
推荐指数
1
解决办法
1035
查看次数

加盐密码可以逆转吗?

我刚刚在 Hosting24.com 上按下“忘记密码”,结果我的密码以纯文本形式通过电子邮件发送给我(见下图)。我联系了他们的技术支持来询问这个问题,他们告诉我:

我们在我们的网站上使用盐加密,密码不以纯文本形式存储。如果您对数据安全有任何疑问,请告知我们。

我的理解是,一旦密码被“加盐”,它就无法恢复为纯文本。我也非常担心,考虑到他们的合作伙伴公司 000webhosting最近成为大规模黑客事件的受害者,这暴露了他们的安全性低于标准。

谢谢。

在此输入图像描述

编辑
经过几封激烈的电子邮件后,我终于得到了这样的回复:

我们的密码在数据库中使用安全加密方法进行加密。尽管我们确实有一种解密方法(用于防止欺诈),但随着我们重新设计项目并更新代码以遵守新时代标准,所有这一切都将发生变化。很抱歉让您在这件事上失望了。

如有任何其他问题,请联系我们。节日快乐!

'新时代'。惊人的。

编辑:
我向网站发送了此链接来证明这一点,因此我预计他们的技术支持会投大量反对票。

security salt

2
推荐指数
1
解决办法
1183
查看次数

(Symfony)Doctrine ORM findAll:太多的信息

我想知道是否可以修改$this->getDoctrine()->getRepository('AppBundle:Foo')->findAll(),以便我只获取相关实体的ID.因为Foo与"一个用户"和"多个组"相关,所以我总是在结果中得到"整个用户对象"和"所有组对象",这使得结果非常不清楚.那么,是否可以只打印相关对象的ID?

我希望有一个人可以帮助我.谢谢!

php symfony doctrine-orm

0
推荐指数
1
解决办法
375
查看次数