自从更新到Xcode10和Swift 4.2后,我总是在我的pod中获得这个构建时间警告.我该怎么做才能删除此警告?
我试图删除派生数据,清理和生成项目,但它不起作用:(
我发现有人在这里问了同样的问题https://github.com/Alamofire/Alamofire/issues/2624并且Jon Shier得到了答案,但是在删除以前的xcworkspace并更新cocoapods之后我仍然无法解决问题,我没有实现更改"生成位置相关的可执行文件"设置,因为我找不到它.请分享,如果你能找到这个问题的解决方案:)
我需要在创建视图模型时传递值(userData),所以我需要创建一个视图模型工厂
这是我的 viewModel,我需要application并userData初始化它ScoreViewModel
class ScoreViewModel(application: Application, userData: UserKM) : AndroidViewModel(application) {
}
Run Code Online (Sandbox Code Playgroud)
但现在我很困惑如何application在创建 viewModel 工厂时通过
class ScoreViewModelFactory(private val userData: UserKM) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(ScoreViewModel::class.java)) {
return ScoreViewModel(userData = userData,application = ?????? ) as T
}
throw IllegalArgumentException("Unknown ViewModel class")
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么办 ?
android kotlin android-viewmodel android-architecture-components android-jetpack
如果当前日期是2018年8月3日(星期五),我想获得2018年8月5日(星期六和星期日)
如果当前日期是8月4日(星期六),我仍然希望获得2018年8月5日(星期六和星期日)
如果当前日期是8月6日(星期一)那么我想得到8月11日和12日(星期六和星期日)
如何在swift中做到这一点?
所以我使用:
所以我仍然使用Firestore 和 Cloud Function 模拟器,尚未部署在实际生产服务器中。
每当我关闭服务器时,Firestore 模拟器中的所有文档都会被删除,对吧。
所以我创建了一个脚本来填充 firestore 模拟器。我使用云函数 http 触发器,因此在我点击该端点后,Firestore 模拟器将填充我需要的文档。我像这样创建http触发器
export const populateFirestoreData = functions
.https.onRequest(async (req, res) => {
// I create 5 dummy user documents
creatingDummyUsers()
// then create 8 dummy event documents in attendedEvents sub-collection
creatingDummyAttendedEvents()
})
function creatingDummyUsers() {
const dummyUsers = []; // 5 data here
const promises = dummyUsers.map( (dummyUser) => db.doc(`users/${dummyUser.uid}`).set(dummyUser);
await Promise.all(promises)
}
function creatingDummyAttendedEvents() {
const dummyEvents …Run Code Online (Sandbox Code Playgroud) node.js firebase google-cloud-functions google-cloud-firestore
我有 2 个集合视图部分,当第一次加载这个 VC 时,两个部分(室内和室外)最初只会显示 3 个项目。
但是在用户按下“更多”按钮后,室内或室外的每个部分都会展开并显示所有可用的项目,如下图
我试图制作代码,但似乎有时它可以扩展,有时它不扩展(仍然显示 3 个项目)。
这是主控制器中的代码:
class FacilitiesVC: UIViewController {
@IBOutlet weak var collectionView: UICollectionView!
var facilitiesCategoryData = [[String:Any]]()
var outdoorFacilitiesIsExpanded = false
var indoorFacilitiesIsExpanded = false
override func viewDidLoad() {
super.viewDidLoad()
getIndoorOutdoorFacilitiesData()
}
}
extension FacilitiesVC {
// MARK: - Helper Methods
func getIndoorOutdoorFacilitiesData() {
let facilitiesData = FacilitiesCategoryLibrary.fetchFacilitiesCategory()
var indoorFacilities = [FacilitiesCategory]()
var outdoorFacilities = [FacilitiesCategory]()
// distinguishing between indoor and outdoor data
for facData in facilitiesData {
if facData.type == "Indoor …Run Code Online (Sandbox Code Playgroud) 我需要在UIImage中绘制/涂鸦一行,如上图所示,我在UIView上看到很多教程涂鸦线但在UIImage中没有.
用户在图像上涂鸦后,我想将其保存为新图像(具有线条的图像).我怎么在Swift中做到这一点?
我只能在UIView上找到绘制线而不是在UIImage中用于绘制UIView就像这个在youtube教程http://youtube.com/watch?v=gbFHqHHApC4中,我将其更改为继承DrawView到UIImageView
struct Stroke {
let startPoint : CGPoint
let endPoint : CGPoint
let strokeColor : CGColor
}
class DrawView : UIImageView {
var isDrawing = false
var lastPoint : CGPoint!
var strokeColor : CGColor! = UIColor.black.cgColor
var strokes = [Stroke]()
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
guard !isDrawing else { return }
isDrawing = true
guard let touch = touches.first else {return}
let currentPoint = touch.location(in: self)
lastPoint = currentPoint
print(currentPoint)
}
override …Run Code Online (Sandbox Code Playgroud) 我是初级iOS开发人员.我想重构我的代码.目前我想重构我的领域方法.为了保存或删除Realm中的数据,我需要在整个地方使用很多try try block,所以我想提供一个服务来处理这个问题.我试过但我不知道这是不是正确的方法
import RealmSwift
class RealmService {
private init() {}
static let shared = RealmService()
var realm = try! Realm()
func save(expression: ()) {
do {
try realm.write {
// I want to pass the expression in this block here
expression
}
} catch {
post(error)
}
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
func saveToRealmDatabase(wishList: WishList, product: Product) {
RealmService.shared.save(expression: {
// I want to pass expression in the block in here as argument
wishList.products.append(product)
}())
}
Run Code Online (Sandbox Code Playgroud)
我想将表达式wishList.products.append(product)作为RealmService类中函数的参数传递.有没有更好的方法来实现这一目标?
我正在尝试使用导航控制器。我有一个底部导航视图。位于我的 MainActivity 上,它是使用以下代码启动的:
class MainActivity : AppCompatActivity() {
lateinit var navController : NavController
lateinit var logoHeaderImageView : ImageView
var toolbarMenu : Menu? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
logoHeaderImageView = findViewById(R.id.header_lakuin_image_view)
navController = Navigation.findNavController(this,R.id.nav_main_host_fragment)
setupBottomNavMenu(navController)
setupActionBar(navController)
}
fun setupBottomNavMenu(navController: NavController) {
NavigationUI.setupWithNavController(bottom_navigation_view,navController)
}
fun setupActionBar(navController: NavController) {
setSupportActionBar(main_activity_toolbar)
main_activity_toolbar.title = ""
val appBarConfiguration = AppBarConfiguration(
setOf(
// set some destination as the top hierarchy destination, to make the up button doesn't show.
R.id.destination_home,
R.id.destination_order,
R.id.destination_favourite,
R.id.destination_cart,
R.id.destination_profile …Run Code Online (Sandbox Code Playgroud) android android-navigation android-architecture-components android-jetpack android-architecture-navigation
我是使用 Android 导航控制器的新手。
这是我的主要活动的 xml:
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Activities.MainActivity">
<androidx.appcompat.widget.Toolbar
android:id="@+id/main_activity_toolbar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:elevation="4dp" app:layout_constraintHorizontal_bias="0.0">
</androidx.appcompat.widget.Toolbar>
<fragment
android:id="@+id/nav_main_host_fragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="parent"
app:layout_constraintTop_toBottomOf="@+id/main_activity_toolbar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:name="androidx.navigation.fragment.NavHostFragment"
app:navGraph="@navigation/main_graph"
app:defaultNavHost="true"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)
我的 kotlin 主要活动:
class MainActivity : AppCompatActivity(),NavController.OnDestinationChangedListener {
lateinit var navController : NavController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
navController = Navigation.findNavController(this,R.id.nav_main_host_fragment)
navController.addOnDestinationChangedListener(this)
setupActionBar()
}
override fun onDestinationChanged(
controller: NavController,
destination: NavDestination,
arguments: Bundle?) {
}
private fun setupActionBar() {
setSupportActionBar(main_activity_toolbar)
supportActionBar?.title …Run Code Online (Sandbox Code Playgroud) android android-navigation android-architecture-components android-jetpack android-architecture-navigation
我曾尝试阅读此内容,但它并没有解决我的问题
所以我使用此代码导航到下一个目的地
val nextDirection = CreateEventNameFragmentDirections.actionToCreateEventType(userKM, newEvent)
findNavController().navigate(nextDirection)
Run Code Online (Sandbox Code Playgroud)
但它在我错误旋转设备后崩溃
java.lang.IllegalStateException: 没有当前导航节点
我用这个更新gradle
Run Code Online (Sandbox Code Playgroud)implementation 'android.arch.navigation:navigation-fragment-ktx:2.2.1' implementation 'android.arch.navigation:navigation-ui-ktx:2.2.1'
但它仍然不起作用,它仍然崩溃。我该怎么办 ?这是我的主要活动
class MainActivity : AppCompatActivity(), NavController.OnDestinationChangedListener {
private lateinit var navController : NavController
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Initial Setup views
navController = Navigation.findNavController(this,R.id.nav_host_fragment)
setupBottomNavMenu()
setupActionBar()
// Add Listeners
navController.addOnDestinationChangedListener(this)
}
private fun setupBottomNavMenu() {
bottom_nav.setupWithNavController(navController)
}
private fun setupActionBar() {
generalToolbar.title = ""
searchToolbar.title = ""
searchWithBackButtonToolbar.title = ""
// set up top hierarchy destination
val appBarConfiguration …Run Code Online (Sandbox Code Playgroud) android android-navigation android-architecture-components android-architecture-navigation android-jetpack-navigation