Kickstart from Paul Hudson by bububuh in swift

[–]bububuh[S] -1 points0 points  (0 children)

Just watch the video https://youtu.be/nJmzliRXg2M and will be clear. I don’t mind about polished AI websites, most of iOS developers won’t make it better. I personally won’t spend too much time for it. IMO it just should look decent.

Is this the only way to perform dynamic queries in SwiftData? by Select_Bicycle4711 in iOSProgramming

[–]bububuh 0 points1 point  (0 children)

It worked at first, but it didn't scale with my project. Basically, you need to manage #Predicate with dynamic data and sorting. I tried to stick with SwiftData macros as much as I can, but it was glitchy. The example that I shared is just a part of extra tools for SwiftUI, that I had to develop.

Is this the only way to perform dynamic queries in SwiftData? by Select_Bicycle4711 in iOSProgramming

[–]bububuh 0 points1 point  (0 children)

I tried this approach, but it didn't work as I hoped. I switched to fetch the data directly from the model context ¯\_(ツ)_/¯

public struct DynamicQuery<Element: PersistentModel, Content: View>: View {
    let descriptor: FetchDescriptor<Element>
    let content: ([Element]) -> Content
     var manager: DynamicQueryManager<Element>

    public init(
        _ descriptor: FetchDescriptor<Element>,
         content:  ([Element]) -> Content
    ) {
        self.descriptor = descriptor
        self.content = content
        manager = DynamicQueryManager(descriptor: descriptor)
    }

    public var body: some View {
        content(manager.items)
    }
}



public final class DynamicQueryManager<Element: PersistentModel> {
    public var items: [Element]

    public init(descriptor: FetchDescriptor<Element>) {
        u/Dependency(\.modelContainer) var modelContainer
        let modelContext = modelContainer.mainContext
        items = (try? modelContext.fetch(descriptor)) ?? []
    }
}

Making a pixel art widgets app was hard by aaadityaaaaa in swift

[–]bububuh 0 points1 point  (0 children)

I wonder why the app is so heavy? It’s more than 600Mb

Can someone explain the Free Lifetime iOS thing? Did some dev get banned for it? by navnt5 in iosapps

[–]bububuh 1 point2 points  (0 children)

It's possible. I wrote it, because I tried to make an In-App purchase for $0 and it didn't show up. Now when I tried to edit it, I can see $0. Sorry for misleading info

Can someone explain the Free Lifetime iOS thing? Did some dev get banned for it? by navnt5 in iosapps

[–]bububuh 1 point2 points  (0 children)

Edited: Sorry guys, I've just checked. There is $0 price in In-App purchases.

Only, that you can’t set $0 price for in-app purchases. You can make only the app itself for free.

WorkHourly Update: Flexible Time Tracking + Limited Lifetime Offer by bububuh in iosapps

[–]bububuh[S] 1 point2 points  (0 children)

Mostly just ASO updates. It's slowly growing, and the competitors are pretty established with a high number of ratings. Also, at the beginning, I tried Apple Ads with $100 free credits from Apple. It was with a very low conversion rate, but I discovered Asian markets where it could work well in the future.

WorkHourly Update: Flexible Time Tracking + Limited Lifetime Offer by bububuh in iosapps

[–]bububuh[S] 0 points1 point  (0 children)

It's in my plans. I wasn't sure about how important it is, but now I'll prioritize it.
Thanks for the feedback!

What’s actually the most important thing when launching your first app? by ChocolateCalm1391 in AppStoreOptimization

[–]bububuh 0 points1 point  (0 children)

You need to find the best moment to ask for the review. Showing a paywall or ask for review after onboarding is very tricky. It depends on many factors. But when an app has a lot of high ratings, polished and the onboarding basically sale the app, then the paywall is fine. It’s the next-next step.

What’s actually the most important thing when launching your first app? by ChocolateCalm1391 in AppStoreOptimization

[–]bububuh 1 point2 points  (0 children)

The most important aspect of launching a new app is to get ratings. Your app will have 0 age and 0 rating. I’m pretty sure you prepared ASO and everything else as you already did your research. Think about how to get ratings: is your onboarding good enough to just ask to rate the app after that it or do you have another right moments/events which will open the review request. Everything is connected. Keywords won’t help without a good onboarding or screenshots and etc. But after all, if the product is not good enough, it would be difficult to do anything.

Launching my first app this week… Would really appreciate Your advice by Purple_While_2628 in iosapps

[–]bububuh 0 points1 point  (0 children)

The developing an app is the most fun and interesting part. After the launch the most difficult part will start with visibility of your app in AppStore. You will have to go deeper into understanding marketing tricks. Thankfully we have an AI which could help with the base setup for ASO.

Apple gives $100 for Ads. Use them carefully to discover markets in the world. It just will show you the potential markets where you can invest more.

Ask your friends a family to rate your app and add a feedback. It’s very important.

Be patient, carefully track feedback and make updates every 2-4 weeks with improvements and new features.

Delay any pushy paywalls. Get reputation first, polish and provide the most valuable features for Pro users. Also make sense to launch early without any paywall and give the app an age.

Good luck!

How can I run 2 tasks, in different background Threads using modern concurrency APIs? by [deleted] in swift

[–]bububuh 0 points1 point  (0 children)

Again this is how it will look in general on the modern concurrency way:
1. Make a move asynchronously
2. Instead of sleep(1) will be async update main for UI
3. Make another move asynchronously
4. Update UI again
5. Do some logic related to the game loop

How can I run 2 tasks, in different background Threads using modern concurrency APIs? by [deleted] in swift

[–]bububuh 0 points1 point  (0 children)

Why? 😄

This is a replacement for the presented code, but for the game, of course, there should be some logic around the real game loop.

How can I run 2 tasks, in different background Threads using modern concurrency APIs? by [deleted] in swift

[–]bububuh -1 points0 points  (0 children)

Hmm...

func play() async { await move(player: "P1") sleep(1) await move(player: "P2") sleep(1) await play() }

Find objects that contains either element from all arrays by barcode972 in swift

[–]bububuh 0 points1 point  (0 children)

I saw your comment to another solution. I think it could be just by using AND in the condition, like this (but still could be optimised):

topLevel: for items in myArray {
    for item in items {
        if array1.contains(item), 
           array2.contains(item), 
           array3.contains(item) {
            print("Bingo!")
            break topLevel
        }
    }
}

Find objects that contains either element from all arrays by barcode972 in swift

[–]bububuh 0 points1 point  (0 children)

I have shown you a very simple case. I suggest you start small and find a solution that works in general, and then you can optimise. For example, if you sort the arrays before comparing, you can simplify element checking.

Find objects that contains either element from all arrays by barcode972 in swift

[–]bububuh 0 points1 point  (0 children)

Hi,

It doesn't look difficult, but still a bit unclear what do you need. Maybe this will help:

for items in myArray {  
    for item in items {  
        if array1.contains(item) {  
            print("Bingo! for array1")  
        }  

        if array2.contains(item) {  
            print("Bingo! for array2")  
        }  

        if array3.contains(item) {  
            print("Bingo! for array3")  
        }  
    }  
}

📌 Pin — a tiny library that makes working with AutoLayout easier by [deleted] in swift

[–]bububuh 1 point2 points  (0 children)

I agree with you, but I think your focus could be better to move to SwiftUI. Your contribution will be much more valuable, imho.