小编Ale*_*lex的帖子

Swift Framework 在 lldb 中返回“模棱两可的使用”方法扩展

我已升级到 Xcode 11 和 swift 5,并在通过框架提供方法扩展时遇到了问题。更具体地说,在这样一个结构的项目中:

-> Main Project
-> Framework created from sources in 'Main Project'
-> Subproject using the above Framework (Sources packaged in the framework are not visible to the sub-project)
Run Code Online (Sandbox Code Playgroud)

一切都编译并运行良好,但是在子项目上运行调试会话error: ambiguous use of时,从 lldb 命令行调用时,“框架”中的所有扩展都会返回。这是一个给出想法的代码示例:

创建一个 macOs 命令行项目,并在文件 Spells.swift 中添加一个新目标“MagicFramework”(确保该文件对 Main & MagicFramework 可见)

import Foundation

extension String {
    public func castSpell() -> String {
        return "? " + self
    }
}
Run Code Online (Sandbox Code Playgroud)

然后创建一个子项目'Wizard',并在一个文件wizard.swift(仅对Wizard 可见):

import Foundation
import MagicFramework


public class Tadaa {

    public …
Run Code Online (Sandbox Code Playgroud)

frameworks lldb swift

9
推荐指数
1
解决办法
1023
查看次数

是否可以在目标C中为静态变量设置KVO通知?

我有A类,实例变量从缓存的数据派生属性,该缓存的数据表示为单例,并且是A的一部分(本质上是NSDictionary)。有时会修改此缓存。

发生这种情况时,我希望所有A实例在下次访问其属性时都从缓存中提取新信息,或者换句话说,使它们的属性内容无效。

到目前为止,手动通知每个实例(使用静态数组跟踪成员)。我不是粉丝。通知中心可能有一个选项,但是我宁愿尝试使用KVO。

有没有人设法从iOS的类变量订阅KVO更改?(换句话说,使用对静态变量A的更改来告诉A实例刷新其数据。)

换句话说,我很想拥有

static void* context = &context;
static myHadHocObject* msignal;
Run Code Online (Sandbox Code Playgroud)

然后在A类代码中

[msignal addObserver:self forKeyPath:@"operation" options:NSKeyValueObservingOptionNew context:context];
Run Code Online (Sandbox Code Playgroud)

并通过通知类实例中的msignal更改

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{

}
Run Code Online (Sandbox Code Playgroud)

我试过使用各种had hoc类,但是没有运气。似乎我缺少了一些东西。

指针是受欢迎的,谢谢!

design-patterns objective-c key-value-observing ios

6
推荐指数
1
解决办法
1321
查看次数

使用parse.com进行单页Web应用程序可抓取

我正在使用Parse.com构建一个网站,并尝试通过FB和Google机器人抓取它.该网站基于parse.com,不使用Angular.

我已经查看了这里的主题,并在我的结尾设置相应的东西.我已经创建了一个端点来测试这些东西:

app.get('/hello/:id', function(req, res) {
    res.render('hello');
});
Run Code Online (Sandbox Code Playgroud)

以下是我在日志中的内容,当谷歌机器人提取网址时

https://www.example.org/hello/#!a/b

I2015-11-10T05:35:18.580Z]v642 Ran custom endpoint with:
  Input: {"method":"GET","url":"/hello/","headers":{"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","accept-encoding":"gzip,deflate","cache-control":"no-cache","from":"googlebot(at)googlebot.com","host":"www.example.org","user-agent":"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)","version":"HTTP/1.1","x-forwarded-for":"10.252.5.60","x-forwarded-proto":"https"}}
  Result: Success
Run Code Online (Sandbox Code Playgroud)

由于Google抓取工具不会使用片段重写Url,因此会发送错误的网页快照(对应于没有参数的基本网址+路径).有趣的是,facebookbot用一个转义片段取代了shebang,然后获取下面的url:

/hello/?_escaped_fragment_=posts/abcdef
Run Code Online (Sandbox Code Playgroud)

在解析结束时正确处理,pre-render.io发送正确的缓存页面.

我几个小时以来一直在讨论这个问题,Parse的人们无处可寻找一个相当基本和重要的问题.

有人曾经设法让Parse的单页设计与谷歌和Facebook机器人合作,还是仅仅是一个失败的原因?

谢谢!

PS:现在看来,谷歌机器人尝试渲染AJAX页面,而不考虑转义的碎片.换句话说,现在看来,默认的行为,但在同一时间,现有的AJAX页面可能仍与逃脱片段爬......看到线程这里从Web开发人员的反馈.

search-engine web-applications prerender parse-platform

6
推荐指数
0
解决办法
153
查看次数

将UISearchBar添加到嵌入到NavigationController IOS6中的UICollectionviewController

我想在UICollectionViewController中添加一个搜索栏,其嵌入方式如下:UItabbarController> UINavigationbarController> UICollectionViewController> SearchBar(!)在此视图中,搜索栏将替换NavigationBar.

在相同的设计下,如果我使用UITableViewController测试上面的内容,搜索栏会显示正常(通过编程方式和通过Storyboard)

问题是我在使用StoryBoard框架时无法在UICollectionViewController上添加搜索栏; 它只是坐在视图的中间,我对如何将它移到顶部毫无头绪.此外,它始终显示在UICollectionview下方,因此它不可见.

所以,以编程方式采取其他路线:

-(void)viewWillAppear:(BOOL)animated{
self.searchBarTop = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
[self.searchBarTop setPlaceholder:@"Enter your command here"];
self.searchDC = [[UISearchDisplayController alloc]initWithSearchBar:self.searchBarTop contentsController:self];
self.searchBarTop.delegate = self;

[[self navigationController] setNavigationBarHidden:NO animated:animated];
[self.navigationController.navigationBar addSubview:self.searchBarTop];
}
Run Code Online (Sandbox Code Playgroud)

有了这个,搜索栏显示正常.但不幸的是,当我输入一些文本时,它会消失在视图之上 - 大概是因为底层的navBar这样做了 - (不知道为什么......)

我不确定为什么搜索栏对UITableViewController很好,以及为什么UICollectionViewController会如此痛苦.也就是说,任何人都有一个线索,为什么搜索栏/导航栏消失了,我怎么能解决这个问题?

欢迎任何解决方案..

谢谢 !-一个

uinavigationcontroller uisearchbar ios uicollectionview

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

如何让iOS在UIBarButtonItem图像上设置渐变?

只是想知道,我通过以下方式定制了UIBarButtonItems

+ (UIBarButtonItem *)createBarButtonItemWithTitle:(NSString *)t target:(id)tgt action:(SEL)a
{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    UIImage *buttonImage = [[UIImage imageNamed:@"blabla.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)];


    CGRect buttonFrame = [button frame];
    buttonFrame.size.width = 35;
    buttonFrame.size.height = buttonImage.size.height;
    [button setFrame:buttonFrame];

    [button setBackgroundImage:buttonImage forState:UIControlStateNormal];

    [button addTarget:tgt action:a forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:button];

    return buttonItem ;
}
Run Code Online (Sandbox Code Playgroud)

但是现在,我没有按钮背景图像上的阴影/光泽效果....

有没有办法让它自动完成,或者我必须以编程方式完成它?

编辑: 这是一个捕捉,我用一个简单的绿色方块使其更加明显. 没有更多的阴影/光泽效果

customization look-and-feel uibarbuttonitem ios

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

有人可以在iOS中解释文件所有者

对此问题提前道歉,尽管自iOS问世以来已经详细讨论过.但尽管我付出了最大的努力,但我仍然没有得到它.我可以拍摄的最接近的图像是"冻结和干燥的物体图形",这很好,但是当它归结为原始编程时,这无助于连接点.

因此,考虑到在找出问题之前你无法真正描述任何内容,让我们采用以下示例:

1)我有一个Xib文件,比如一个UIView,带有标签和imageView

2)我有一个来自UIView的classX,子类,它附加到IB的身份检查器中的Xib.IB连接和IB操作在连接检查器中连接到此类.此类将IB/IA声明为属性.

3)我有一个UIViewController,由classVC表示.在这个类中,我实例化1)使用标准[[NSBundle mainBundle] loadNibNamed:@"bla" owner:??? options:nil][0];

4)classX和classVC通过自定义委托,标准内容进行通信.

问题:

a)XIB文件的所有者是什么.老实说,我不知道.

b)我为主[[NSBundle mainBundle] loadNibNamed:@"bla" owner:??? options:nil][0];人参数添加了什么,最重要的是,为什么?

当对象图解冻并浇水时,不应该运行时连接Outlets在2)中定义的那么在这种情况下文件所有者的重点是什么?

要么

如果XIB文件奥特莱斯没有连接到任何东西,没有"文件的所有者"的意思是"我是一个包含所有必需的网点,使得类的实例,并解压缩XIB之间的连接可以使类?(这就是为什么我不得到它,因为如何建立关联???)

就是这样了.就像以前一样愚蠢.

编辑:我不同意其他答案同样有效的事实.我理解他们的意思,但到目前为止,我还没有理解所有者参数对于我描述的情况应该具有什么,最重要的是,为什么.

object-graph iboutlet ios loadnibnamed

5
推荐指数
0
解决办法
172
查看次数

创建NSManagedObject的副本

我需要暂时将a的内容存储NSManagedObject到字典中.因为核心数据有自己的内存管理程序,所以我不想保留任何指向NSManagedObject字段的强指针,此时只有值感兴趣(值在视图控制器之间传递,MOC不同).我无法创建弱指针,因为我想控制内存回收何时完成.

我尝试了一些事情,都失败了或者不符合目的.

  1. 重复[[myNSMO alloc] initWithEntity:[NSEntityDescription entityForName:entity inManagedObjectContext:myNSMO.managedObjectContext] insertIntoManagedObjectContext:nil]; 它是有效的,但不适合我的应用程序设计(没有深入细节)

  2. NSDictionary从中生成一个NSManagedObject,使用[myNSMO dictionaryWithValuesForKeys:<#(NSArray *)#>].这不好,因为它返回一个包含NSManagedObject字段地址的字典.

  3. NSDictionary使用copyWithZone 创建一个填充每个键值,这样也 [myDictionary setObject:[myNSMO.field copyWithZone:nil] forKey:@"Key"]; 不起作用,我仍然得到字段地址...

  4. 手动输入每个字段 [myDictionary setObject:[NSString stringWithFormat:@"%@",myNSMO.field ] forKey:@"Key"]; 这次很好,我确实获得了新的内存分配.但手动编码很费时间......

有人发现聪明的方法吗?选项1)不起作用的原因是因为我使用字典作为队列.我首先存储对象的副本,然后在需要时弹出输入.然后将该特定字典条目的副本返回给ask方法.问题是,我不能创建的副本,NSManagedObject这是使用创建[[...] insertIntoManagedObjectContext:nil];

有解决方案吗

core-data nsdictionary nsmanagedobject ios

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

下载云代码内容和网络托管文件

好吧,我炸毁了我的存储库,并且墨菲定律就是这样,许多其他文件都没有"版本化".没有什么能比如搞砸坏习惯了.

有没有办法从Parse下载云代码文件和Web托管文件?

有解决方案逐一完成,即从parse.com/cloud代码和用于Web托管的slurp公共文件,但这不是很快......

有没有人遇到过这个问题并找到了解决方法?

谢谢 !-一个

web-hosting parse-platform parse-cloud-code

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