我正在尝试创建一个框架来保存在iOS和OS X上运行的应用程序的公共实体类.目前我只是在每个目标中包含文件,但这需要更改数据模型,以便从当前目标获取类(因为在Swift中你必须指定模型文件中具有类的模块).这当然意味着我有时会忘记,事情不起作用.
显而易见的解决方案是创建一个包含实体类的共享框架,以便数据模型始终指向同一个位置.
问题是似乎没有任何方法可以创建构建在两个平台上的框架.
有没有人找到一种方法来创建一个适用于两个平台的单一框架或库?
在Xcode去为OS X应用程序添加Storyboard之前,您可以通过将数组控制器绑定Managed Object Context到File's Owner一个Model Key Pathof 来将数组控制器连接到文档的托管对象上下文managedObjectContext.有了故事板,就再也没有了File's Owner,从现在开始你从哪里获得背景?
Apple的文档落后于这个领域,在Xcode中没有任何明显的地方可以绑定.显然,我可以回到非故事板路线并使用旧方法,但必须有一种新方法.
我正在开发一个应用程序,我已经发送给一些beta测试人员.在启动应用程序的短短几分钟内,用户就崩溃了.当窗口加速说应用程序崩溃时,他复制了详细信息部分中的所有文本并通过电子邮件发送给我.我已将文本保存为纯文本文件,并为其指定了.crash扩展名,这使得它可以像常规崩溃报告一样通过控制台打开,所以我认为我的扩展名是正确的(但可能没有).我发出的版本是由Xcode和Archive选项构建的,因此Xcode知道app和.dSYM的位置.我知道使用iPhone应用程序,您可以将崩溃报告拖到组织者,Xcode将为您进行符号化.我无法找到任何需要Mac崩溃报告的地方.我已经看了,atos但它讨论了内存位置,包括应用程序运行的位置,我没有看到报告中列出的信息.看一下原始崩溃报告,它看起来像是一个早期发布的视图控制器,但我无法确定这是原因还是症状.我真正的问题是; 有没有办法让Xcode符号化报告或工具,我可以直接移交.dSYM文件,应用程序和报告并获取符号化报告?我看过谷歌,但我发现的一切(除了前面提到的手册页atos)都是关于iPhone报告的象征,而不是Mac OS X的报告.
我已经阅读了Apple的Swift iBook(类型转换和协议)的相关部分,但我似乎找到了一种方法来指定对象是符合特定协议的特定类的实例.
作为一个例子tableView(_: , cellForRowAt: )我希望将由返回的单元格转换tableView.dequeueReusableCell(withIdentifier: reuseID, for: indexPath)为UITableViewCell符合RLMEntityCapableCell协议的子类(只是指定构造item函数有一个变量,称为该实例Object,或其子类之一).
这条路线有效,但双重铸造似乎过度:
protocol RLMEntityCapableCell: class {
var item: Object { get set }
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: reuseID, for: indexPath) as! RLMEntityCapableCell // Cast here so we can set item
cell.item = items[indexPath.row]
return cell as! UITableViewCell // Cast again so the return type is right… …Run Code Online (Sandbox Code Playgroud) 我有一个问题,NSDictionary返回null一个NSString即使字符串是字典中.这是代码:
- (void)sourceDidChange:(NSNotification *)aNote {
NSDictionary *aDict = [aNote userInfo];
DLog(@"%@", aDict);
NSString *newSourceString = [aDict objectForKey:@"newSource"];
DLog(@"%@", newSourceString);
newSourceString = [newSourceString stringByReplacingOccurrencesOfString:@" " withString:@""];
DLog(@"%@", newSourceString);
NSString *inspectorString = [newSourceString stringByAppendingString:@"InspectorController"];
DLog(@"%@", inspectorString);
newSourceString = [newSourceString stringByAppendingString:@"ViewController"];
DLog(@"%@", newSourceString);
}
Run Code Online (Sandbox Code Playgroud)
我得到以下日志声明:
2010-04-17 23:50:13.913 CoreDataUISandbox[13417:a0f] -[RightViewController sourceDidChange:] { newSource = "Second View"; }
2010-04-17 23:50:13.914 CoreDataUISandbox[13417:a0f] -[RightViewController sourceDidChange:] (null)
2010-04-17 23:50:13.916 CoreDataUISandbox[13417:a0f] -[RightViewController sourceDidChange:] (null)
2010-04-17 23:50:13.917 CoreDataUISandbox[13417:a0f] -[RightViewController sourceDidChange:] (null)
2010-04-17 23:50:13.917 CoreDataUISandbox[13417:a0f] …Run Code Online (Sandbox Code Playgroud) 我正在使用[button.tag] = 50;
但它不起作用.
我想将标签设置为按钮.
objective-c ×3
cocoa ×2
core-data ×2
macos ×2
xcode ×2
cocoa-touch ×1
debugging ×1
frameworks ×1
ios ×1
ios8 ×1
iphone ×1
nsdictionary ×1
nsstring ×1
swift ×1
swift3 ×1