小编Sen*_*ful的帖子

我如何使用Mogenerator?

我安装了Mogenerator.现在我该怎么办?我该如何使用它?

我遇到的第一个问题是我不知道它安装在哪里.在安装过程中,它只允许我选择要安装它的硬盘驱动器,而不是目录.最自然的位置是Applications文件夹,但它不存在.

接下来,自述文件(我在网上找到)说明:

通过注意保存*.xcdatamodel时,Xmo会工作.如果模型文件的Xcode项目项注释包含xmod,则会触发AppleScript,根据模型的文件名创建一个文件夹,并使用模型中的派生源代码文件填充它.然后,它将新文件夹作为组参考添加到项目中,并将所有源文件添加到项目中.

上述陈述有几个问题尚不清楚:

  • "模型文​​件的Xcode项目项评论"是指什么?如何让它包含"xmod"?
  • 添加此评论并让mogenerator监控.xcdatamodel文件是使用mogenerator的唯一方法吗?有没有办法我可以手动运行mogenerator,以便重新生成生成的文件?

installation xcode plugins core-data mogenerator

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

如果我想为自己分配属性怎么办?

如果我尝试运行以下代码:

photographer = photographer
Run Code Online (Sandbox Code Playgroud)

我收到错误:

为自己分配属性.


我想将属性分配给自己以强制photographer didSet块运行.

这是一个真实的例子:在2013年冬季斯坦福iOS课程(13:20)的"16. Segues and Text Fields"讲座中,教授建议编写类似如下的代码:

@IBOutlet weak var photographerLabel: UILabel!

var photographer: Photographer? {
    didSet {
        self.title = photographer.name
        if isViewLoaded() { reload() }
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
    reload()
}

func reload() {
    photographerLabel.text = photographer.name
}
Run Code Online (Sandbox Code Playgroud)

注意:我做了以下更改:(1)代码从Objective-C切换到Swift; (2)因为它在Swift中,我使用didSet属性的块而不是setPhotographer:方法; (3)而不是self.view.window我使用,isViewLoaded因为前者在访问view财产时错误地强迫视图加载; (4)该reload()方法(仅)为了简单起见而更新标签,因为它更接近我的代码; (5)IBOutlet添加了摄影师标签以支持这个更简单的代码; (6)由于我使用的是Swift,isViewLoaded()因为性能原因,检查不再存在,现在需要防止崩溃,因为IBOutlet被定义为UILabel!UILabel? …

properties uiviewcontroller ios swift didset

19
推荐指数
3
解决办法
5471
查看次数

在UITableView或UICollectionView上加载vs可见单元格

随着iOS 10的推出,似乎我们将在UITableView和UICollectionViews上默认启用预取.这意味着在用户实际看到它们之前,将获取未在屏幕上显示的单元格.

以下是一些相关方法:

UITableView:

UICollectionView:

所有这些都在他们的描述中特别提到"可见".随着在iOS 10中引入预取,我如何区分预取的单元与当前可见的单元?

换一种说法:

  1. 我如何获得所有可见细胞?
  2. 我如何获得所有加载的单元格?

看起来UITableView或UICollectionView上没有任何新的API可以帮助解决这个问题.

uitableview uicollectionview uicollectionviewcell ios10

19
推荐指数
1
解决办法
3729
查看次数

如何在Xcode的UI测试中检查网络中是否存在静态文本?

我正在使用Xcode 7 XCTest中引入的UI测试API.在我的屏幕上,我有一个从网络加载的文本.

如果我只是用exists属性检查它,测试就会失败.

XCTAssert(app.staticTexts["Text from the network"].exists) // fails
Run Code Online (Sandbox Code Playgroud)

如果我首先将tap或任何其他事件发送到文本,它确实有效:

app.staticTexts["Text from the network"].tap()
XCTAssert(app.staticTexts["Text from the network"].exists) // works
Run Code Online (Sandbox Code Playgroud)

看起来如果我只是调用exists它立即评估它并失败,因为尚未从网络下载文本.但我认为当我调用该tap()方法时,它会等待文本出现.

有没有更好的方法来检查是否存在从网络传送的文本?

像(这段代码不起作用):

XCTAssert(app.staticTexts["Text from the network"].eventuallyExists)
Run Code Online (Sandbox Code Playgroud)

ios xctest swift xcode7 xcode-ui-testing

18
推荐指数
1
解决办法
1万
查看次数

在 SwiftUI 中创建一个计算的 @State 变量

想象一下,我正在设计一个 SwiftUI 屏幕,要求用户输入用户名。屏幕将进行一些检查以确保用户名有效。如果用户名无效,则会显示错误消息。如果用户点击“关闭”,它将隐藏错误消息。

最后我可能会得到这样的结果:

在此处输入图片说明

enum UsernameLookupResult: Equatable {
    case success
    case error(message: String, dismissed: Bool)

    var isSuccess: Bool { return self == .success }
    var isVisibleError: Bool {
        if case .error(message: _, dismissed: false) = self {
            return true
        } else {
            return false
        }
    }
    var message: String {
        switch self {
        case .success:
            return "That username is available."
        case .error(message: let message, dismissed: _):
            return message
        }
    }
}

enum NetworkManager {
    static func checkAvailability(username: String) -> UsernameLookupResult …
Run Code Online (Sandbox Code Playgroud)

computed-properties swiftui

18
推荐指数
1
解决办法
6356
查看次数

XCUIElement - 获取图像值

我有一个类型.Image和类的变量XCUIElement.像这样的东西:

var image = app.descendantsMatchingType(.Image).elementAtIndex(0)

有没有办法可以提取实际图像,以便将其与其他图像进行比较?

我试过caling value方法,但它返回一个字符串.将它投射到UIImage总是失败.

ios xctest swift xcode-ui-testing

17
推荐指数
2
解决办法
4398
查看次数

在OS X上设置应用程序的初始窗口大小?

我在Yosemite上使用Xcode 7.我创建了一个新的OS X应用程序,它带有一个故事板.当我启动应用程序时,应用程序窗口很小.

在应用启动时设置默认窗口大小的最简单方法是什么?

理想情况下,我正在寻找故事板解决方案,而不是编程解决方案.但是,如果不存在,那么编程解决方案就足够了.我不想设置窗口的最小/最大尺寸 ; 用户应该能够根据自己的需要调整大小.

macos window storyboard

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

iPad主屏幕应用程序每次打开都会刷新

我正在使用HTML5和SenchaTouch为iPad编写Web应用程序.该应用程序使用缓存清单脱机运行.一旦它被添加到主屏幕并在没有Safari的情况下打开,它将在每次打开时自动刷新,即使只是导航到主屏幕并返回.理想的行为是离开应用程序,做其他事情,然后回到应用程序,一切都未触及.

可以在此处找到显示相同(不需要的)行为的类似应用程序的示例:http://ignitedmediadesign.com/WebApp/index.html

我已经读过使用缓存清单应该已经在iPhone上解决了这个问题(http://www.stevesouders.com/blog/2011/06/28/lack-of-caching-for-iphone-home-screen-apps /),但似乎没有完成iPhone或iPad的技巧.

有没有其他方法来解决这个问题?是否有一些秘密可以缓存阻止我可能错过的清单文件?

application-cache ipad sencha-touch offline-web-app iphone-standalone-web-app

16
推荐指数
1
解决办法
5128
查看次数

使用MKUserTrackingBarButtonItem时如何指定缩放级别?

我正在使用一个MKUserTrackingBarButtonItem按钮,允许用户自动跟踪他们在地图上的位置.问题是,当他们点击此按钮时,它会被缩放得太远.我希望它以指定的缩放级别(即跨度)开始.我怎样才能做到这一点?

当用户点击按钮进行更改时MKUserTrackingModeFollow,它似乎使用用户上次手动更改的相同缩放级别(即在地图上使用手势).尝试通过setRegionsetVisibleMapRect不影响更改模式时将使用的缩放级别来指定不同的缩放级别MKUserTrackingModeFollow.

尝试override mapView:didChangeUserTrackingMode:设置区域会导致模式更改回MKUserTrackingModeNone.例:

- (void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated {
    if (mode == MKUserTrackingModeFollow) {
        CLLocationCoordinate2D center = mapView.userLocation.location.coordinate;
        MKCoordinateSpan span = MKCoordinateSpanMake(0.002306, 0.001717);
        [mapView setRegion:MKCoordinateRegionMake(center, span) animated:YES];
        // [mapView setUserTrackingMode:MKUserTrackingModeFollow animated:NO];
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我在设置区域后立即尝试重置模式,则在用户静止时可以正常工作,但如果用户正在移动则缩小.

最简单的解决方案是,如果有一种方法可以通过发送我的跨度值来简单地为MKUserTraking指定类似缩放级别的内容.但是,由于这似乎不存在,我还能做什么?

objective-c mapkit ios apple-maps

16
推荐指数
1
解决办法
1236
查看次数

更改从xib加载的UITableViewHeaderFooterView上的背景颜色表示使用contentView.backgroundColor代替

我正在从xib文件创建一个UITableViewHeaderFooterView,几乎所有东西都正常工作.

问题是,现在当我尝试更改背景颜色时(或者如果我在xib中配置了一个),它会不断地将此消息输出到控制台:

不推荐在UITableViewHeaderFooterView上设置背景颜色.请改用contentView.backgroundColor.

这意味着我有两个问题:

  • 如果我不想看到那个警告,我必须摆脱xib文件中的背景颜色.(这是不可取的,因为这意味着我的xib不再反映视图在运行时的样子).
  • 当我尝试通过代码更改背景颜色时,我得到了contentView.backgroundColor建议,但是当我尝试遵循该建议时,没有任何反应.(这是因为contentViewnil.)

注意:这里有一个类似的问题,但主要是关注消息,而不是找到解决上述两个问题的替代解决方案.

更新:要清楚,我想继续使用xib文件作为标题视图,并希望能够调用dequeueReusableHeaderFooterViewWithIdentifier:这样表可以有效地管理视图.

objective-c uitableview uiview ios

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