我在我的应用程序中使用魔法记录,并希望为用户添加功能以添加"注释",这是"条目"的子项.
我添加了这段代码:
[MagicalRecord saveWithBlock: ^(NSManagedObjectContext *localContext) {
Note *newNote = [Note MR_createInContext: localContext];
newNote.content = noteContent;
newNote.name = @"User Note";
[self.entry addNotesObject: newNote];
}
completion: ^(BOOL success, NSError *error) {
if (error != nil)
{
// show alert
}
else if (success)
{
[[self tableView] reloadData];
}
}];
Run Code Online (Sandbox Code Playgroud)
我在最后一行上遇到的错误是"非法尝试在不同上下文中的对象之间建立关系'条目"
我尝试将'entry'和'newNote'的上下文设置为'localContext',但我仍然得到相同的错误.
我错过了什么?
我有两个UILabel彼此相邻的观点UITableViewCell.左边有一条线,右边有一条线,使用剩下的任何水平空间.两个标签距离单元顶部的距离相同.单元格的高度取决于右侧标签的高度.在某些情况下,我会在右上方和下方看到不需要的额外空间UILabel,因此它们不是顶部对齐的.再看一下,我发现两个标签都有hasAmbiguousLayout回报YES.
当我调用constraintsAffectingLayoutForAxis调试器时,我得到以下输出:
(lldb) po [0x7b769520 constraintsAffectingLayoutForAxis:0]
<__NSArrayM 0x7b6cb340>(
<NSAutoresizingMaskLayoutConstraint:0x7b76abf0 h=--& v=--& 'UIView-Encapsulated-Layout-Left' H:|-(0)-[UITableViewCellContentView:0x7b768fc0] (Names: '|':MyTVCell:0x7b769330'MyTVCell' )>,
<NSLayoutConstraint:0x7b76b010 H:|-(15)-[UILabel:0x7b769520'Number'] (Names: '|':UITableViewCellContentView:0x7b768fc0 )>,
<NSContentSizeLayoutConstraint:0x7b769a90 H:[UILabel:0x7b769520'Number'(131)] Hug:250 CompressionResistance:750>
)
Run Code Online (Sandbox Code Playgroud)
对于位于第一个UILabel右侧的第二个UILabel,我得到这个:
(lldb) po [0x7b769710 constraintsAffectingLayoutForAxis:0]
<__NSArrayM 0x7b6cb9e0>(
<NSContentSizeLayoutConstraint:0x7b769a90 H:[UILabel:0x7b769520'Number'(131)] Hug:250 CompressionResistance:750>,
<NSAutoresizingMaskLayoutConstraint:0x7b76abf0 h=--& v=--& 'UIView-Encapsulated-Layout-Left' H:|-(0)-[UITableViewCellContentView:0x7b768fc0] (Names: '|':MyTVCell:0x7b769330'MyTVCell' )>,
<NSLayoutConstraint:0x7b76b010 H:|-(15)-[UILabel:0x7b769520'Number'] (Names: '|':UITableViewCellContentView:0x7b768fc0 )>,
<NSLayoutConstraint:0x7b76b230 H:[UILabel:0x7b769520'Number']-(15)-[UILabel:0x7b769710'Q12472']>,
<NSLayoutConstraint:0x7b76ab90 'UIView-Encapsulated-Layout-Width' H:[UITableViewCellContentView:0x7b768fc0(320)]>,
<NSLayoutConstraint:0x7b76b310 UILabel:0x7b769710'Q12472'.trailing == UITableViewCellContentView:0x7b768fc0.trailing - 15>
)
Run Code Online (Sandbox Code Playgroud)
任何人都可以根据上面的输出解释为什么这些标签有一个模糊的布局?
更新: …
我是新手,试图了解如何使用UIPopoverPresentationController.
我在我的应用程序中需要的是,当按下按钮时,屏幕按钮上的弹出框将显示在屏幕的一半上的xib文件上.现在发生的是我设法转向第二个视图控制器,但不知道如何加载xib文件以及如何使popover成为屏幕的一半.这是我的代码
import UIKit
class BaseViewController: UIViewController , UIPopoverPresentationControllerDelegate {
@IBAction func moveToPopoverView(sender: UIButton) {
var popoverViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Popover") as! UIViewController
popoverViewController.modalPresentationStyle = .Popover
popoverViewController.preferredContentSize = CGSizeMake(200, 200)
let popoverPresentationViewController = popoverViewController.popoverPresentationController
popoverPresentationViewController?.permittedArrowDirections = .Any
popoverPresentationViewController?.delegate = self
presentViewController(popoverViewController, animated: true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
Run Code Online (Sandbox Code Playgroud) 好吧,这应该不会太难,但周日早上证明我错了......
我有一个Arraywith 结构,并且只想删除一个与其 name 属性匹配的结构String。例如:
struct Person {
let name: String
}
var myPersons =
[Person(name: "Jim"),
Person(name: "Bob"),
Person(name: "Julie"),
Person(name: "Bob")]
func removePersonsWith(name: String) {
myPersons = myPersons.filter { $0.name != name }
}
removePersonsWith(name: "Bob")
print(myPersons)
Run Code Online (Sandbox Code Playgroud)
结果是:
[Person(name: "Jim"), Person(name: "Julie")]
Run Code Online (Sandbox Code Playgroud)
但我怎样才能只删除一个鲍勃呢?
由于NavigationButton不再可用,我如何检查NavigationLink中的条件以便导航到另一个视图?
NavigationLink(destination: Dashboard(userName: self.userId,
password: self.password), isActive: $showDashboard) {
Button(action: {
if self.userId.isEmpty || self.password.isEmpty {
self.isAlert = true
} else {
self.showDashboard = true
}
}) {
Text("Submit")
.foregroundColor(.white)
.font(.system(size: 22))
Dashboard()
}
.frame(minWidth: 150, idealWidth: 300, maxWidth: 450,
minHeight: 30, idealHeight: 40, maxHeight: 50, alignment: .center)
.background(Color(red: 81/255, green: 221/255, blue: 182/255))
.padding([.leading, .trailing], 20)
}
Run Code Online (Sandbox Code Playgroud)
编辑:-
另外,如果用户名和密码的长度超过 16,我想显示警报;如果长度超过 10,则显示不同的警报;如果长度为 0,则显示空消息警报。
我使用下面的代码来加载地图,但结果出来后,地图仍然以用户位置为中心而不是注释周围,因为我必须滚动到图钉才能看到。
Map(coordinateRegion: $region, showsUserLocation: true, annotationItems: searchResults) { dest in
MapAnnotation(coordinate: dest.coordinate, anchorPoint: CGPoint(x: 0.5, y: 0.5)) {
MapPin(coordinate)
}
}
Run Code Online (Sandbox Code Playgroud) 我有几个应该从某个A类继承的类.
他们每个人都应该是一个单身人士.
这可以实现吗?
考虑这个典型的例子,有时可以在教程中看到等等(甚至在Apple的代码中):
protocol Nameable {
var name: String {get}
}
struct Person : Nameable {
var name: String
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,这种模式的好处是什么?一旦将函数添加到协议中,我就能理解它,但对于只有一个或多个变量的协议,什么可能是一个很好的应用程序?为什么不加入name每个struct和class?
如何将字符串转换为单个字符串数组?所以String -> [String]
如果我Array(myString)这样做,会产生一个字符数组。我尝试了 flatmap (或最新 Xcode beta 中的compactMap):
stringArray = Array(myString).flatMap { $0 as? String }
Run Code Online (Sandbox Code Playgroud)
然后我收到警告:“从‘字符’转换为不相关类型‘字符串’总是失败”并且‘print(stringArray) 结果为 []。
这可能吗?
编辑:这已经在这个问题的不接受答案中得到了回答:Convert Swift string to array
ios ×5
swift ×4
arrays ×2
swiftui ×2
xcode ×2
autolayout ×1
core-data ×1
ios8 ×1
mapkit ×1
navigation ×1
protocols ×1
singleton ×1
storyboard ×1
string ×1
swift3 ×1
swift4 ×1
uilabel ×1
uitableview ×1