我已升级到 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) 我有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类,但是没有运气。似乎我缺少了一些东西。
指针是受欢迎的,谢谢!
我正在使用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开发人员的反馈.
我想在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会如此痛苦.也就是说,任何人都有一个线索,为什么搜索栏/导航栏消失了,我怎么能解决这个问题?
欢迎任何解决方案..
谢谢 !-一个
只是想知道,我通过以下方式定制了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)
但是现在,我没有按钮背景图像上的阴影/光泽效果....
有没有办法让它自动完成,或者我必须以编程方式完成它?
编辑:

对此问题提前道歉,尽管自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之间的连接可以使类?(这就是为什么我不得到它,因为如何建立关联???)
就是这样了.就像以前一样愚蠢.
编辑:我不同意其他答案同样有效的事实.我理解他们的意思,但到目前为止,我还没有理解所有者参数对于我描述的情况应该具有什么,最重要的是,为什么.
我需要暂时将a的内容存储NSManagedObject到字典中.因为核心数据有自己的内存管理程序,所以我不想保留任何指向NSManagedObject字段的强指针,此时只有值感兴趣(值在视图控制器之间传递,MOC不同).我无法创建弱指针,因为我想控制内存回收何时完成.
我尝试了一些事情,都失败了或者不符合目的.
重复[[myNSMO alloc] initWithEntity:[NSEntityDescription entityForName:entity inManagedObjectContext:myNSMO.managedObjectContext] insertIntoManagedObjectContext:nil];
它是有效的,但不适合我的应用程序设计(没有深入细节)
NSDictionary从中生成一个NSManagedObject,使用[myNSMO dictionaryWithValuesForKeys:<#(NSArray *)#>].这不好,因为它返回一个包含NSManagedObject字段地址的字典.
NSDictionary使用copyWithZone 创建一个填充每个键值,这样也
[myDictionary setObject:[myNSMO.field copyWithZone:nil] forKey:@"Key"];
不起作用,我仍然得到字段地址...
手动输入每个字段
[myDictionary setObject:[NSString stringWithFormat:@"%@",myNSMO.field ] forKey:@"Key"];
这次很好,我确实获得了新的内存分配.但手动编码很费时间......
有人发现聪明的方法吗?选项1)不起作用的原因是因为我使用字典作为队列.我首先存储对象的副本,然后在需要时弹出输入.然后将该特定字典条目的副本返回给ask方法.问题是,我不能创建的副本,NSManagedObject这是使用创建[[...] insertIntoManagedObjectContext:nil];
有解决方案吗
好吧,我炸毁了我的存储库,并且墨菲定律就是这样,许多其他文件都没有"版本化".没有什么能比如搞砸坏习惯了.
有没有办法从Parse下载云代码文件和Web托管文件?
有解决方案逐一完成,即从parse.com/cloud代码和用于Web托管的slurp公共文件,但这不是很快......
有没有人遇到过这个问题并找到了解决方法?
谢谢 !-一个
ios ×5
core-data ×1
frameworks ×1
iboutlet ×1
lldb ×1
loadnibnamed ×1
nsdictionary ×1
object-graph ×1
objective-c ×1
prerender ×1
swift ×1
uisearchbar ×1
web-hosting ×1